批处理教程tebieban.docx

上传人:b****6 文档编号:6759010 上传时间:2023-01-10 格式:DOCX 页数:27 大小:34.79KB
下载 相关 举报
批处理教程tebieban.docx_第1页
第1页 / 共27页
批处理教程tebieban.docx_第2页
第2页 / 共27页
批处理教程tebieban.docx_第3页
第3页 / 共27页
批处理教程tebieban.docx_第4页
第4页 / 共27页
批处理教程tebieban.docx_第5页
第5页 / 共27页
点击查看更多>>
下载资源
资源描述

批处理教程tebieban.docx

《批处理教程tebieban.docx》由会员分享,可在线阅读,更多相关《批处理教程tebieban.docx(27页珍藏版)》请在冰豆网上搜索。

批处理教程tebieban.docx

批处理教程tebieban

命令

解释

attrib

作用:

显示或更改文件属性。

格式:

ATTRIB[+R|-R][+A|-A][+S|-S][+H|-H][+I|-I]路径\文件[/S[/D][/L]]

说明:

【attrib文件;显示文件属性】

+设置属性。

-清除属性。

R只读文件属性。

A存档文件属性。

S系统文件属性。

H隐藏文件属性。

I无内容索引文件属性。

[drive:

][path][filename]指定attrib要处理的文件。

/S处理当前文件夹及其所有子文件夹中的匹配文件。

【attrib+r/s】【仅文件】

/D也处理文件夹。

【/D开关只有和/S开关一起使用才有效】

/L处理符号链接和符号链接目标的属性。

call

作用:

CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理

(1)call[drive:

][path]filename【filename参数必须具有.bat或.cmd扩展名】

(2)call:

label参数

……

:

label

……

goto:

eof

说明:

调用本文件内命令段,相当于子程序

cd

1.不带任何参数只键入cd,显示当前目录(即路径)

2.cd\退回到根目录(即当前驱动器)

3.cd..退回上一级目录

4.cd路径更改目录,但只局限于当前驱动器内

5.cd/d路径更改目录,可以更改驱动器

cls

功能:

清除屏幕上的所有显示,光标置于屏幕左上角

color

作用:

设置默认的控制台前景和背景颜色

格式:

color颜色属性

说明:

颜色属性由两个十六进制数字指定:

第一个为背景,第二个则为前景。

每个数字可以为以下任何值之一:

0=黑色8=灰色

1=蓝色9=淡蓝色

2=绿色A=淡绿色

3=湖蓝色B=淡浅绿色

4=红色C=淡红色

5=紫色D=淡紫色

6=黄色E=淡黄色

7=白色F=亮白色

copy

作用:

拷贝一个或多个文件到指定盘上

格式:

COPY[源盘][路径]<源文件名>[目标盘][路径][目标文件名]

说明:

(1)COPY是文件对文件的方式复制数据,复制前目标盘必须已经格式化;

  

(2)复制过程中,目标盘上相同文件名称的旧文件会被源文件取代;

  (3)复制文件时,必须先确定目标般有足够的空间,否则会出现;insufficient的错误信息,提示磁盘空间不够;

  (4)文件名中允许使用通配举“*”“?

”,可同时复制多个文件;

  (5)COPY命令中源文件名必须指出,不可以省略。

  (6)复制时,目标文件名可以与源文件名相同,称作“同名拷贝”此时目标文件名可以省略;

  (7)复制时,目标文件名也可以与源文件名不相同,称作“异名拷贝”,此时,目标文件名不能省略;

  (8)复制时,还可以将几个文件合并为一个文件,称为“合并拷贝”,格式如下:

COPY[源盘][路径]<源文件名1>+<源文件名2>+…+<源文件名n>[目标盘][路径]<目标文件名>;

  (9)利用COPY命令,还可以从键盘上输入数据建立文件,格式如下:

COPYCON[盘符:

][路径]<文件名>;

  (10)注意:

COPY命令的使用格式,源文件名与目标文件名之间必须有空格!

date

作用:

显示或设置日期

格式:

date【显示系统日期并提示输入新的日期,不修改则可直接按回车键】

date/t【只输出当前日期,不提示输入新日期】

date2011-09-10【设置新日期】

del

格式:

del[/p][/f][/s][/q]路径\文件

说明:

删除文件,文件可以使用通配符

[/p]删除每一个文件之前提示确定

[/f]强制删除只读文件

[/s]删除所有子目录中指定文件

[/q]安静模式,删除全局通配符(*.*)时,不要求确认

dir

格式:

dir[drive:

][path][filename][/A[[:

]attributes]][/B][/C][/D][/L][/N]

[/O[[:

]sortorder]][/P][/Q][/R][/S][/T[[:

]timefield]][/W][/X][/4]

作用:

显示目录中的文件和子目录列表。

说明:

/A显示具有指定属性的文件。

属性D目录R只读文件

H隐藏文件A准备存档的文件

S系统文件I无内容索引文件

L解析点-表示“否”的前缀

/B使用空格式(没有标题信息或摘要)。

/C在文件大小中显示千位数分隔符。

这是默认值。

用/-C来

禁用分隔符显示。

/D跟宽式相同,但文件是按栏分类列出的。

/L用小写。

/N新的长列表格式,其中文件名在最右边。

/O用分类顺序列出文件。

排列顺序N按名称(字母顺序)S按大小(从小到大)

E按扩展名(字母顺序)D按日期/时间(从先到后)

G组目录优先-反转顺序的前缀

/P在每个信息屏幕后暂停。

/Q显示文件所有者。

/R显示文件的备用数据流。

/S显示指定目录和所有子目录中的文件。

/T控制显示或用来分类的时间字符域。

时间段C创建时间

A上次访问时间

W上次写入的时间

/W用宽列表格式。

/X显示为非8.3文件名产生的短名称。

格式是/N的格式,

短名称插在长名称前面。

如果没有短名称,在其位置则

显示空白。

/4用四位数字显示年

errorlevel

程序返回码,echo%errorlevel%每个命令运行结束,可以用这个命令格式查看返回码用于判断刚才的命令是否执行成功,默认为0,一般命令执行出错会设errorlevel为1

exit

作用:

退出CMD.EXE程序(命令解释器)或当前批处理脚本。

格式:

exit

find

作用:

在文件中搜索字符串。

格式:

1.find"string"路径\文件【不可省略引号;文件要带扩展名】

结果:

显示包含指定字符串的行

2.find/v"string"路径\文件

结果:

显示所有未包含指定字符串的行

3.find/c"string"路径\文件

结果:

显示包含指定字符串的行的数量

4.find/n"string"路径\文件

结果:

显示包含指定字符串在整个文本中所在的行号【就是第几行】

5.find/i"string"路径\文件

结果:

搜索字符串时忽略大小写【默认是区分大小写的】

备注:

【"string"】指定要搜索的文字串;【路径\文件】指定要搜索的文件,如果没有指定路径,find将搜索键入的或者由另一命令产生的文字

示例:

Find常和type命令结合使用

Type[drive:

][path]filename|find"string"#挑选包含string的行

Type[drive:

][path]filename|find/v"string"#剔除文件中包含string的行

Type[drive:

][path]filename|find/c#显示文件行数

以上用法将去除find命令自带的提示语(文件名提示)

@echooff

echo111>test.txt

echo222>>test.txt

find"111"test.txt

deltest.txt

pause

运行显示如下:

----------TEST.TXT

111

请按任意键继续...

@echooff

echo111>test.txt

echo222>>test.txt

typetest.txt|find"111"

deltest.txt

pause

运行显示如下:

111

请按任意键继续...

for

1.一般用法:

for%%iin(set)docommand【直接在命令行中只需要一个%】

解释:

(1)for语句的形式变量i,可以换成26个字母中的任意一个,这些字母会区分大小写,也就是说,%%I和%%i会被认为不是同一个变量

(2)set表示的字符串或变量可以是一个,也可以是多个,每一个字符串或变量,我们称之为一个元素,每个元素之间,用空格键、跳格键、逗号、分号或等号分隔;

(3)for语句依次提取set中的每一个元素,把它的值赋予形式变量i,带到do后的command中参与命令的执行;并且每次只提取一个元素,然后执行一次do后的命令语句,而无论这个元素是否被带到command中参与了command的运行;当执行完一次do后的语句之后,再提取set中的下一个元素,再执行一次command,如此循环,直到set中的所有元素都已经被提取完毕,该for语句才宣告执行结束

【for%%iin(路径\*.txt)doecho%%i与for/r路径%%iin(*.txt)doecho%%i的区别,第一个仅搜索指定文件夹下的,第二个搜索指定及其子文件夹下符合的文件】

2.for/d%%iin(路径\文件夹)docommand

解释:

文件夹命中包含通配符,在指定路径下搜索匹配的文件夹,并赋值给i【不指定路径表示在当前目录下】【仅能匹配指定目录下的第一级文件夹】【不能匹配带隐藏属性的文件夹】

3.

(1)for/r路径%%iin(.)docommand

列举路径下所有文件夹以及子文件夹,结果的显示方式为【路径\文件夹\.】

(2)for/r路径%%iin(包含通配符和扩展名的文件)docommand

列举所有符合条件的文件的路径

【不能搜索隐藏属性的文件夹或文件】

(3)for/r路径%%iin(具体文件名)doifexist%%iecho%%i

可以用来搜索文件

4.for/l%%iin(初值,步长,终值)docommand

解释:

从初值开始计数,以步长递变,直至最接近终值的那个整数值为止,这之间有多少个数,do后的语句就执行多少次。

5.

(1)for/f%%iin(test.txt)docommand

解释:

把test.txt中的文本按段落划分为元素,即第一段为元素1,第二段为元素2,空行跳过,划分之后按照for语句的循环处理机制进行处理,即把元素分别赋予%%i

(2)for/f"delims=,"%%iin(test.txt)docommand

解释:

把test.txt中的文本按段落划分为元素,即第一段为元素1,第二段为元素2,空行跳过,划分之后按照delims设定的符号【这里是,】将每个元素划分为小节【默认的划分符号是空格】【注意中英文的符号是不同的】,处理的时候,默认处理第一小节。

【可以添加一个以上的符号,如delims=,.】

(3)for/f"delims=,tokens=2"%%iin(test.txt)docommand

解释:

上面是默认处理第一小节,【tokens=2】可以设定处理的小节,这里指处理第二小节

特:

for/f"delims=,tokens=2,4"%%iin(test.txt)docommand

解释:

处理2和4小节,如果tokens=后面指定了多个数字,如果形式变量为%%i,那么,第一个数字指代的内容用第一个形式变量%%i来接收,第二个数字指代的内容用第二个形式变量%%j来接收,第三个数字指代的内容用第三个形式变量%%k来接收……第N个数字指代的内容用第N个形式变量来接收,其中,形式变量遵循字母的排序,第N个形式变量具体是什么符号,由第一个形式变量来决定:

如果第一个形式变量是%%i,那么,第二个形式变量就是%%j;如果第一个形式变量用的是%%x,那么,第二个形式变量就是%%y。

如:

for/f"delims=,tokens=2,4"%%iin(test.txt)doecho%%i%%j

(4)for/f"skip=2"%%iin(test.txt)docommand

解释:

处理时,跳过前两段

(5)for/f"eol=:

"%%iin(test.txt)docommand

解释:

处理时,忽略以【:

】开头的段,【这里的符号只能设定一个】

如何决定该使用for/f的哪种句式?

(兼谈usebackq的使用)

  for/f%%iin(……)do(……)语句有好几种变形语句,不同之处在于第一个括号里的内容:

有的是用单引号括起来,有的是用双引号包住,有的不用任何符号包裹,具体格式为:

  1、for/f%%iin(文件名)do(……)

  2、for/f%%iin('命令语句')do(……)

  3、for/f%%iin("字符串")do(……)

看到这里,我想很多人可能已经开始犯了迷糊了:

如果要解决一个具体问题,面对这么多的选择,如何决定该使用哪一条呢?

1、当你希望读取文本文件中的内容的话,第一个括号中不用任何符号包裹,应该使用的是第1条语句;例如:

你想显示test.txt中的内容,那么,就使用for/f%%iin(test.txt)doecho%%i;

  2、当你读取的是命令语句执行结果中的内容的话,第一个括号中的命令语句必须使用单引号包裹,应该使用的是第2条语句;例如:

你想显示当前目录下文件名中含有test字符串的文本文件的时候,应该使用for/f%%iin('dir/a-d/b*test*.txt')doecho%%i这样的语句;

  3、当你要处理的是一个字符串的时候,第一个括号中的内容必须用双引号括起来,应该是用的是第3条语句;例如:

当你想把这串字符中的点号换为短横线并显示出来的话,可以使用for/f"delims=.tokens=1-3"%%iin("")doecho%%i-%%j-%%k这样的语句。

  很显然,第一个括号里是否需要用符号包裹起来,以及使用什么样的符号包裹,取决于要处理的对象属于什么类型:

如果是文件,则无需包裹;如果是命令语句,则用单引号包裹;如果是字符串,则使用双引号括起来。

  当然,事情并不是绝对如此,如果细心的你想到了批处理中难缠的特殊字符,你肯定会头大如斗。

  或许你头脑中灵光一闪,已经想到了一个十分头痛的问题:

在第1条语句中,如果文件名中含有空格或&,该怎么办?

  照旧吗?

  拿个叫test1.txt的文件来试试。

  你很快写好了代码,新建文件-->码字-->保存为批处理,前后费时不到1分钟:

1.@echooff

2.for/f%%iin(test1.txt)doecho%%i

3.pause

复制代码

你兴冲冲地双击批处理,运行后,屏幕上出现了可耻的报错信息:

系统找不到文件test。

  当你把test1.txt换成test&1.txt后,更怪异的事情发生了:

CMD窗口在你眼前一闪而过,然后,优雅地消失了。

  你可能觉得自己的代码写错了某些符号,你再仔细的检查了一次,确认没有笔误,然后,你再次双击批处理,结果问题照旧;你开始怀疑其他程序对它可能有影响,于是关掉其他窗口,再运行了一次,问题依旧;你不服气地连续运行了好几次,还是同样的结果。

  怪哉!

  你一拍大腿,猛然想起了一件事:

当路径中含有特殊字符的时候,应该使用引号把路径括起来。

对,就是它了!

  但是,当你把代码写出来之后,你很快就焉了:

for/f%%iin("test1.txt")doecho%%i,这不就是上面提到的第3条for/f命令的格式吗?

批处理会把test1.txt这个文件名识别为字符串啊!

  还好,下面有个例子,并配有简单的说明:

 FOR/F"usebackqdelims="%iIN(`set`)DO@echo%i

 会枚举当前环境中的环境变量名称。

  你仔细对比了for/f语句使用usebackq和不使用usebackq时在写法上的差别,很快就找到了答案:

当使用了usebackq之后,如果第一个括号中是一条命令语句,那么,就要把单引号'改成后引号`(键盘左上角esc键下面的那个按键,与~在同一键位上)。

 usebackq是一个增强型参数,当使用了这个参数之后,原来的for语句中第一个括号内的写法要做如下变动:

如果第一个括号里的对象是一条命令语句的话,原来的单引号'要改为后引号`;如果第一个括号里的对象是字符串的话,原来的双引号"要改为单引号';如果第一个括号里的对象是文件名的话,要用双引号"括起来。

  验证一下,把[code17]改写成如下代码:

@echooff

for/f"usebackq"%%iin("test1.txt")doecho%%i

pause

复制代码

  测试通过!

  此时,你很可能会仰天长叹:

Shit,微软这该死的机器翻译!

  至于把代码中的空格换成&后,CMD窗口会直接退出,那是因为&是复合语句的连接符,CMD在预处理的时候,会优先把&前后两部分作为两条语句来解析,而不是大家想象中的一条完整的for语句,从而产生了严重的语法错误。

因为牵涉到预处理机制问题,不属于本节要讨论的内容,在此不做详细讲解。

  这个时候,我们会吃惊地发现,区区一条for语句,竟然有多达6种句型:

  1、for/f%%iin(文件名)do(……)

  2、for/f%%iin('命令语句')do(……)

  3、for/f%%iin("字符串")do(……)

  4、for/f"usebackq"%%iin("文件名")do(……)

  5、for/f"usebackq"%%iin(`命令语句`)do(……)

  6、for/f"usebackq"%%iin('字符串')do(……)

其中,4、5、6由1、2、3发展而来,他们有这样的对应关系:

1-->4、2-->5、3-->6。

  好在后3种情形并不常用,所以,牢牢掌握好前三种句型的适用情形就可以了,否则,要在这么多句型中确定选择哪一条语句来使用,还真有点让人头脑发懵。

  至于for/f为什么要增加usebacq参数,我只为第4条语句找到了合理的解释:

为了兼容文件名中所带的空格或&。

它在第5、6条语句中为什么还有存在的必要,我也不是很明白,这有待于各位去慢慢发现。

for命令中的变量

(1)~i【删除引号】

for/f%%iin(txt3.txt)doecho%%~i【显示txt3.txt中的元素时,删除元素的引号["],删除规则是中间的引号不处理,无头不删,有头连尾删】

(2)~fi【展到一个完全合格的路径名】

见f:

\Ms_dos\for命令中的变量\test_~fi【如果%i变量的内容是一个文件名的话,他就会把这个文件所在的绝对路径打印出来,而不只单单打印一个文件名】

(3)~di【扩展到一个驱动器号】

见f:

\Ms_dos\for命令中的变量\test_~di【如果变量%%i的内容是一个文件或者目录名,他就会把他这文件或者目录所在的盘符号打印出来】

(4)~pi【扩展到一个路径】

见f:

\Ms_dos\for命令中的变量\test_~pi【只打印路径不打印文件名字】

(5)~ni【扩展到一个文件名】

见f:

\Ms_dos\for命令中的变量\test_~ni【只打印文件名字,不带扩展名】

(6)~xi

见f:

\Ms_dos\for命令中的变量\test_~xi【只打印文件的扩展名】

(7)~si

见f:

\Ms_dos\for命令中的变量\test_~si【只打印绝对短文件名】

(8)~ai

见f:

\Ms_dos\for命令中的变量\test_~ai【打印文件的属性】

(9)~ti

见f:

\Ms_dos\for命令中的变量\test_~ti【打印文件建立的日期】

(10)~zi

见f:

\Ms_dos\for命令中的变量\test_~zi【打印文件的大小】

(11)~$path:

i

fOR/f"delims="%%iin(“notepad.exe”)doecho%%~$path:

i

上面代码显示结果为C:

\WINDOWS\system32\notepad.exe

他的意思就在PATH变量里指定的路径里搜索notepad.exe文件,如果有notepad.exe则会把他所在绝对路径打印出来,没有就打印一个错误!

可以组合修饰符来得到多重结果:

%~dpI-仅将%I扩充到一个驱动器号和路径

%~nxI-仅将%I扩充到一个文件名和扩展名

%~fsI-仅将%I扩充到一个带有短名的完整路径名

%~dp$PATH:

i-查找列在路径环境变量的目录,并将%I扩充

到找到的第一个驱动器号和路径。

%~ftzaI-将%I扩充到类似输出线路的DIR

goto

作用:

跳转的意思,在批处理中允许以“:

XXX”来构建一个标号,然后用gotoXXX跳转到标号:

XXX处,然后执行标号后的命令。

标号的名字可以随便起,但是最好是有意义的字符串,前加个冒号用来表示这个字符串是标签,goto命令就是根据这个冒号(:

)来寻找下一步跳到到那里。

if

1.if[not][/i]"string1"=="string2"command

作用:

如果两个字符串相匹配,则条件成立,执行命令【注意是==;not表示不匹配】,否则运行下一句;[/i]表示在比较时不区分大小写

2.if[not]exist路径\文件command

作用:

如果指定的文件存在,则执行命令,否则运行下一句【exist换为defined可以判断变量的存在与否】

3.if[not]errorlevelnumbercommand

作用:

程序在运行结束后会返回一个数字值,若返回值大于等于指定的number,则执行命令

4.if(……)else(……)

作用:

条件成立运行if,不成立运行else【注意一定要加括号】

5.EQU-等于【=】

NEQ-不等于【!

=】

LSS-小于【<】

LEQ-小于或等于【<=】

GTR-大于【>】

GEQ-大于或等于【>=】

md

作用:

创建新的子目录

格式:

MD[盘符:

][路径名]<子目录名>  

说明:

(1)“盘符”:

指定要建立子目录的磁盘驱动器字母,若省略,则为当前驱动器;

(2)“路径名”:

要建立的子目录的上级目录名,若缺省则建在当前目录下。

net

netshare

显示本机开启的共享资源

netstart

查看开启了那些服务

netstart服务名

开启服务,禁用的服务无法开启【服务名之间有空格的使用

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 解决方案 > 营销活动策划

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1