windows批处理初级教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
w i n d o w s批处理初级教程 Prepared on 24 November 2020
前一阵子使用WIN7的时候,忽然出现图标缓存的问题。
去网上搜了下解决方案,发现一个比较好的处理步骤。
原文我已经忘记了,后来在年三十的晚上,顿觉很无聊,就按照印象中的代码,写了一个小的批处理文件。
具体参考(此处插入百度文库的那篇文章地址)。
后来觉得批处理挺好玩的,趁在家休息的这些日子,系统学习一下批处理的语法以及应用。
批处理命令通俗的讲就是平时我们见到的那些".bat"为后缀的文件,它们可以不断的重读执行命令,实现windows的自动管理,可以将用户从重复、繁琐、复杂的管理任务中解放出来,事半功倍。
Windows中常用的批处理程序应用范围主要是:文件/文件夹管理、系统启动与关闭、个性化桌面环境、个性化IE、个性化资源管理器、系统优化、系统维护与管理、系统安全、网络管理与安全、组策略与MMC的应用和其他一些高级应用。
一般而言,创建批处理文件最好的方式是使用记事本编辑保存文件。
即在记事本中写代码,然后保存的时候以".bat"作为后缀即可。
看一个例子,以初步接触批处理小程序。
为演示方便,PC机选择目前最为大众化的MicrosoftWindowsXP作为操作系统。
(1)在windows下按【Win+R】键,在弹出的"运行"对话框中输入"notepad"
(2)在文本文件里输入
(3)保存批处理文件
(4)接下来就是运行这个批处理文件。
初学者编写的小程序推荐在DOS下面运行,等已经可以独立的编写稍微复杂程序的时候在找到这个批处理文件,然后直接打开就可以了。
在windows下按【Win+R】键,在弹出的"运行"对话框中输入"cmd",并转到存储""的目录下,这里就是指的是D盘。
运行,就会出现下面的结果
如果直接选择打开"",就会出现下面的界面
所以你会发现,这种直接打开的方式不仅操作简单,而且界面简洁,但是一开始最好从DOS下面运行比较好,究竟为什么,你会在开始的几个小程序里体会到。
在学习批处理程序语法的时候,有一种非常便利的方式。
比如下面要讲的第一个语法,"echo"的使用,我们可以使用下面的方法来获取命令的格式以及用途。
(1)新建一个批处理文件,具体的内容如图所示。
(2)在DOS下运行,得到下面的结果
这样我们就获得了echo命令的语法和用途。
授人以鱼不如授之以渔,掌握这个方法之后,即使长时间没写批处理小程序,我们依旧能够在最短的时间里回忆起相关的语法以及命令。
一些常用的命令有:echo、@、goto、pause、call、start、rem、if、set、setlocal、shift、for、通配符("*"、"")、管道符("|")、重定向符("<"、">"、">>")等等。
在接下来的章节中,我将简单的介绍下这些命令的使用方法。
echo命令语法及应用
echo命令可用于在屏幕显示相关的文字信息,起到提示和说明的作用,还可用于控制批处理文件在执行的过程中是否回显(此处插入回显的定义)。
DOS帮助里这么形容:
显示信息,或将命令回显打开或关上。
ECHO[ON|OFF]
ECHO[message]
要显示当前回显设置,键入不带参数的ECHO。
如果是控制回显,那么则用到上一条的语法。
echoon表示回显打开,echooff表示回显关闭。
示例如下:
:."。
演示如下:
Code6:
Result6:
当命令运行到pause处的时候会暂停执行,并给出了"请按任意键继续..."的提示信息。
按键盘上的任意键,即可继续执行后面的命令,若按下[Ctrl+C]键,则可直接中断批处理的执行,返回到命令行的状态。
goto命令的语法及应用
goto是一个流程控制转向命令,用于控制批处理中的命令执行流程。
先来看看DOS帮助下的解释:
将导向到批处理程序中带标签的行。
GOTOlabel
label指定批处理程序中用作标签的文字字符串。
标签必须单独一行,并且以冒号打头。
、看一个示例:
Code9:
Result9:
可以看出,当执行到goto语句时,直接跳过下面的echo语句,转到last 处,并接着运行last之后的所有语句,一直到结束。
标识符中不能含有逗号、冒号等,但可以使用空格。
标识符的有效长度为最多8个字符,如果多于8个字符则只识别前八个字符。
call命令语法及应用
call命令可以在批处理程序中调用另一个批处理程序,也可调用指定标号之后的所有命令。
命令格式:
CALL[drive:][path]filename[batch-parameters]
参数解释:
batch-parameters指定批处理程序所需的命令行信息。
看一个示例:
Code10:
Result10:
Call命令在使用标号时必须加上":"号,而goto语句中则不需要添加。
此外,call命令转向标号并执行到文件结束时会返回到调用处并继续执行剩下的命令,而goto语句跳转后不再返回。
if命令语法及应用
if命令通过条件来决定批处理程序应该如何执行。
在编写复杂的批处理程序时,"if"是一个必不可少的命令。
先来看看DOS帮助里面的描述:
IF[NOT]ERRORLEVELnumbercommand
IF[NOT]string1==string2command
IF[NOT]EXISTfilenamecommand
NOT指定只有条件为false的情况下,WindowsXP才
应该执行该命令。
ERRORLEVELnumber如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为true。
string1==string2如果指定的文字字符串匹配,指定条件为true。
EXISTfilename如果指定的文件名存在,指定条件为true。
command如果符合条件,指定要执行的命令。
如果指定的
条件为FALSE,命令后可跟一个执行ELSE
关键字后的命令的ELSE命令。
ELSE子句必须在IF之后出现在同一行上。
例如: IFEXISTfilename.(
delfilename.
)ELSE(
.
)
因为del命令需要用一个新行终止,以下子句不会有效:
由于ELSE命令必须与IF命令的尾端在同一行上,以下子句也不会有效:
.
如果都放在同一行上,以下子句有效:
IFEXISTfilename.(delfilename.)
其中,比较运算符可以是:
EQU-等于
NEQ-不等于
LSS-小于
LEQ-小于或等于
GTR-大于
GEQ-大于或等于
来看一个示例:
Code11:
Result11:
如果这么写,那就会出现错误,至于原因在上面引述的DOS帮助里已经写得很清楚了。
Code12:
Result12:
若if命令中带有else子命令,else子命令一定要与if中的最后一个命令在一行,否则会出现错误。
此外,当if或else后面跟有多条命令时,应该用小括号将其括起来。
for命令语法及应用
for命令是批处理中一个功能强大且相对复杂的命令,它可对一组不同的文件或数据进行循环处理。
照旧,看看DOS帮助里面的内容:
FOR%variableIN(set)DOcommand[command-parameters]
%variable指定一个单一字母可替换的参数。
(set)指定一个或一组文件。
可以使用通配符。
command指定对每个文件执行的命令。
command-parameters
为特定命令指定参数或命令行开关。
在批处理文件中使用FOR命令时,指定变量请使用%%variable
而不要用%variable。
变量名称是区分大小写的,所以%i不同于%I.
下面,我们来看一个示例:
Code13:
Result13:
在循环体中可对for后变量直接引用,这种引用与使用set命令定义的变量不同,for 后的变量区分大小写。
Shift语法及应用
Shift命令用于更改批处理文件参数的方式,如指定起始处理参数的位置。
SHIFT[/n]
如果命令扩展名被启用,SHIFT命令支持/n命令行开关;该命令行开关告
命令从第n个参数开始移位;n介于零和八之间。
例如:
SHIFT/2
会将%3移位到%2,将%4移位到%3,等等;并且不影响%0和%1。
看一个示例:
Code14:
Result14:
符号%0~%9专用于批处理从命令行获得的参数,依次代表命令行的相应参数。
rem命令语法及应用
rem命令是一个注释命令,用于在批处理中加入相关的说明信息。
这些说明信息可以帮助读者理解批处理的功能。
命令格式:rem[comment]
参数说明:
·comment:指定要作为注释的任何字符串
演示程序如下:
Code7:
Result7:
可以看出注释的部分只有在代码中才可以看到,结果是不显示的。
在使用rem命令的时候应该将回显状态关闭,否则会将rem命令的整行信息输出到屏幕。
start命令语法及应用
Start命令用于重新启用一个新的命令行窗口,然后在新的窗口中执行指定的程序或命令。
在DOS下面查看帮助信息:
启动另一个窗口运行指定的程序或命令。
START["title"][/Dpath][/I][/MIN][/MAX][/SEP ARATE|/SHARED]
[/LOW|/NORMAL|/HIGH|/REALTIME|/ABOVENORMAL|/BELOWNORMAL]
[/WAIT][/B][command/program]
[parameters]
"title"在窗口标题栏中显示的标题。
path起始目录
B在不创建新窗口的情况下开始应用程序。
除非
启动^C处理,否则该应用程序会忽略^C处理;
^Break是唯一可以中断该应用程序的方式
I新环境是传递给的原始环境,
而不是当前环境
MIN开始时窗口最小化
MAX开始时窗口最大化
SEP ARATE在分开的空间内开始16位Windows程序
SHARED在分共享的空间内开始16位Windows程序
LOW在IDLE优先级类别开始应用程序
NORMAL在NORMAL优先级类别开始应用程序
HIGH在HIGH优先级类别开始应用程序
REALTIME在REALTIME优先级类别开始应用程序
ABOVENORMAL在ABOVENORMAL优先级类别开始应用程序
我们来看一个示例:
Code8:
Result8:
这时候在第二个窗口中输入命令exit,则会正常返回到第一个窗口中。
如果直接关闭第二个窗口,则会出现这种结果,可以看到第一个窗口中的信息没有显示完整,也就是说部分命令没有被执行,所以推荐用命令离开窗口以正常关闭,避免直接关闭,养成良好的习惯。
set语法及应用
set专门用来创建、设置、查看或者删除环境变量。
对于一些功能复杂的批处理程序,自定义变量是不可缺少的。
DOS帮助里关于set命令的描述:
SET[variable=[string]]
variable指定环境变量名。
string指定要指派给变量的一系列字符串。
要显示当前环境变量,键入不带参数的SET。
如果命令扩展名被启用,SET会如下改变:
可仅用一个变量激活SET命令,等号或值不显示所有前缀匹配
SET命令已使用的名称的所有变量的值。
例如:
SETP
会显示所有以字母P打头的变量
如果在当前环境中找不到该变量名称,SET命令将把ERRORLEVEL
设置成1。
SET命令不允许变量名含有等号。
下面来看一个示例:
Code15:
Result15:
所以,从例子中可以看出set命令就是给一个变量赋值,当使用set/a命令的时候,表示赋得是可求值的数字表达式。
另外,批处理文件中使用变量的时候,应该在变量名前后分别加上一个百分号,否则无法正确使用变量。
setlocal语法及应用
setlocal命令可在批处理程序运行时设置自身的临时变量,且不会影响到系统的变量环境设置。
在DOS帮助里有如下的描述:
开始批处理文件中环境改动的本地化操作。
在执行SETLOCAL之后
所做的环境改动只限于批处理文件。
要还原原先的设置,必须执
行ENDLOCAL。
达到批处理文件结尾时,对于该批处理文件的每个
尚未执行的SETLOCAL命令,都会有一个隐含的ENDLOCAL被执行。
看一个例子:
Code16:
Result16:
Setlocal必须与endlocal命令联合使用,endloacl命令用于结束临时变量环境并回到系统变量环境。
通配符("*"、"")的应用
"*"代表任意多个字符(包括零个字符),""代表任意多个字符。
来看一个简单的示例:
Code17:
Result17:
重定向符("<"、">"、">>")的应用
重定向符号,用于控制数据的输入或输出方式。
"<"符号的右边是数据源,左边代表数据目的地;">"及">>"符号的左边是数据源,">"会替换目的数据,而">>"符号只是将数据源添加到目标数据之后。
下面来看例子:
Code18:
Result18:
管道符("|")的应用
管道符"|"将一个命令的输出数据提取出来,然后将提出的数据作为另一个命令的输入。
下面来看示例:
Code19:
Result19:。