批处理入门
echo
"echo"命令可用于在屏幕显示相关的文字信息,还可用于控制批处理文件在执行的过程中是否回显。
命令格式:echo [{on|off}] [message]
参数说明如下:
on:允许批处理文件在执行的过程中回显命令。
off:禁止批处理文件在执行的过程中回显命令。
message:表示需要显示在屏幕上的信息。
@
"@"是一个非常简单的命令,用于禁止当前执行的命令回显在屏幕上。"@"不受"echo"命令设置效果的影响,且命令本身不会回显在屏幕上。
命令格式:@ [command]
参数说明如下:
command:要屏蔽回显的命令。
当命令不加任何参数执行时,将不产生任何效果。
"@"与"echo"的主要区别在于:"@"只对当前命令行起作用,且不受"echo"命令设置影响;"echo"命令则影响设置之后的所有命令,一直到出现另一个"echo"命令改变状态为止。
goto
"goto"是一个流程控制转向命令,用于控制批处理中的命令执行流程。
命令格式:goto label
参数说明如下:
label:表示批处理文件中某行,改行表示批处理文件新的执行点。
批处理文件中的标号通常单独占一行,标号行以":"开头并紧跟标识符,这个标识符将用在"goto"语句后。标识符不能含有逗号、冒号等,但可以使用空格。标识符的有效长度为最多8个字符,如果多于8个字符则识别前8个字符。
pause
"pause"命令用于暂停批处理的执行并给出提示信息,然后由用户决定是继续执行还是中断执行。
命令格式:pause
参数说明如下:
pause:此命令非常简单,无需任何参数。当命令运行后,会中断执行的语句。
call
call是一个功能强大的命令,它不但可在批处理程序中调用另一个批处理程序,而且还可调用指定标号处后面所有的命令。
命令格式:call [[Driver:] [Path] FileName [BatchParameters]] [:label [arguments]]
参数说明如下:
[Driver:] [Path] FileName:指定被调用的批处理文件名,当被调用的批处理文件与正在执行的批处理文件都处于同一目录下时,可以省略盘符即路径。
:label:用于指定调用位置的标签,与goto语句中使用的标签类似。
arguments:对于以":label"开头的批处理程序,指定要传送给其新实例的命令行信息,包括命令行选项、文件名,批处理参数或者变量。
/?:在命令提示符显示帮助。
"call"命令在使用标号时,标识符前必须加上":",而"goto"命令中则不需要加。此外,使用"call"命令转向标号并执行到文件结束时,会返回调用处继续运行下面的命令,而"goto"语句跳转后不再返回。
start
start命令用于重新启动一个单独的命令行窗口,然后在新窗口中执行指定的程序或命令。
命令格式:start ["title"] [/dPath] [/i] [/min] [/max] [{/separate|/shared}] [{/low|/normal|/high|/realtime|/abovenormal|/belownormal}] [/wait] [/b] [FileName] [parameters]
参数说明如下:
title:指定在“命令提示符”窗口标题栏中显示的标题。
/dPath:指定启动目录。
/i:将Cmd.exe启动环境传送到新的“命令提示符”窗口。
/min:启动新的最小化“命令提示符”窗口。
/max:启动新的最大化“命令提示符”窗口。
/separate:在单独的内存空间启动16位程序。
/shared:在共享的内存空间启动16位程序。
/low:以空闲优先级启动应用程序。
/normal:以一般优先级启动应用程序。
/high:以高优先级启动应用程序。
/realtime:以实时优先级启动应用程序。
/abovenormal:以超出常规优先级的方式启动应用程序。
/belownormal:以低出常规优先级的方式启动应用程序。
/wait:启动应用程序,并等待其结束。
/b:启动应用程序时不必打开新的“命令提示符”窗口。除非应用程序启用【Ctrl+C】组合键操作,否则将忽略【Ctrl+C】操作。按【Ctrl+Break】键可中断应用程序。
FileName:指定要启动的命令或程序。
parameters:指定要传送给命令或程序的参数。
/?:在命令提示符显示帮助。
rem
"rem"是一个注释命令,用于在批处理中加入相应的说明信息,这些说明信息可以帮助读者理解批处理的功能。
命令格式:rem [comment]
参数说明如下:
comment:指定要作为注释的任何字符串。
/?:在命令提示符显示帮助。
在使用"rem"注释命令时,应该将回显状态关闭,否则会将"rem"命令的整行信息输出到屏幕。
if
“if”是一个非常重要的命令,它通过条件来决定批处理程序应该如何执行。在编写复杂批处理程序时,“if”是一个必不可少的命令。
命令格式:if [not] errorlevel number command [else expression]
命令格式:if [not] string1 == string2 command [else expression]
命令格式:if [not] exist filename command [else expression]
命令格式:if [/i] string1 compareop string2 command [else expression]
命令格式:if cmdextversion number command [else expression]
命令格式:if defined variable command [else expression]
参数说明如下:
not:指定只有当条件为假时才执行该命令。
errorlevel number:只有当由Cmd.exe运行的前一个程序返回大于或等于number的退出代码时,才能指定真条件。
command:指定只有满足前面的条件时才应执行的命令。
string1 == string2:只有当string1和string2相同时才能指定真条件。
exist filename:如果filename存在,则指定真条件。
compareop:指定长度为3个字母的比较运算符。其中,“EQU”代表等于,“NEQ”代表不等于,“LSS”代表小于,“LEQ”代表小于或等于,“GTR”代表大于,“GEQ”代表大于或等于。
/i:强制字符串比较忽略大小写。
cmdextversion number:只有当与Cmd.exe的“命令扩展”功能相关的内部版本号等于或大于number时,才指定真条件。第一个版本是1。当命令扩展的功能有重大增强时,则在此号码上加1。当禁用了命令扩展时(默认情况下为启用),cmdextversion条件不为真。
defined variable:如果定义了variable,则指定条件为真。
expression:指定将传递给else子句中的命令和任何参数。
/?:在命令提示符显示帮助。
若"if"命令中带有"else"子命令,"else"子命令一定要与"if"中的最后一个命令在同一行,否则会出现错误。此外,当"if"或"else"后面跟着多条命令时,应该用小括号将其扩起来。
set
"set"专门用来创建、设置、查看或删除环境变量。对于一些功能复杂的批处理程序,自定义变量是不可缺少的。
命令格式:set [[/a [expression]] [/p [variable=]] string]
参数说明如下:
/a:将string设置成可求值的数字表达式。
expression:合法的表达式。
/p:将variable的值设置成输入行。
variable:指定需要设置或修改的变量。
string:指定要与指定变量关联的字符串。
/?:在命令提示符显示帮助。
批处理文件中使用变量时,应该在变量名前后分别加上一个百分号,否则无法正确使用变量。
setlocal
"setlocal"命令可在批处理程序运行时设置自身的临时变量环境,且不会影响到系统的变量环境设置。
命令格式:setlocal {enableextension | disableextensions} {enabledelayedexpansion | disabledelayedexpansion}
参数说明如下:
enableextension:启用命令扩展,直到出现匹配的endlocal命令,无论setlocal命令之前的设置如何。
disableextensions:禁用命令扩展,直到出现匹配的endlocal命令,无论setlocal命令之前的设置如何。
enabledelayedexpansion:启用延迟的环境变量扩展,直到出现匹配的endlocal命令,无论setlocal命令之前的设置如何。
disabledelayedexpansion:禁用延迟的环境变量扩展,直到出现匹配的endlocal命令,无论setlocal命令之前的设置如何。
/?:在命令提示符显示帮助。
"setlocal"须与"endlocal"命令联合使用,"endlocal"命令用于结束临时变量环境并回到系统变量环境。
shift
"shift"命令用于更改批处理文件处理参数的方式,如指定起始处理参数的位置等。
命令格式:shift [/n]
参数说明如下:
/n:设置批处理从第n个参数开始移位,n的值为0~8。
/?:在命令提示符显示帮助。
需要说明的是,符号%0~%9专用于批处理从命令行获得参数,依次代表命令行的相应参数。
for
"for"是批处理中一个功能强大且相对复杂的命令,它可对一组不同的文件或数据进行循环处理。
命令格式:for {%variable | %%variable} in (set) do command [CommandLineOptions]
参数说明如下:
%variable | %%variable:代表可替换的参数。使用%variable通过命令提示符执行for命令。使用%%variable在批处理文件中执行for命令。
set:指定要用指定命令处理的一个或多个文件、目录、数值范围以及文本字符串。
command:指定要在包括在set中的每个文件、目录、数值范围以及文本字符串所执行的命令。
CommandLineOptions:指定要通过指定命令使用的任何命令行选项。
/?:在命令提示符显示帮助。
在循环体中可对"for"后变量直接引用,这种引用与使用"set"命令定义的变量不同,"for"后的变量区分大小写。
"*"、"?"
"*"及"?"是两个非常重要的表示符,利用这两个表示符可以灵活地表示文件及目录。其中,"*"代表任意多个字符(包括零个字符),"?"代表任意单个字符。
"<"、">"、">>"
"<"、">"及">>"是批处理程序中的三个重定向符号,用于控制数据的输入或输出方式。"<"符号的右边是数据源,左边代表数据目的地;">"及">>"符号的左边是数据源,">"会替换目的数据,而">>"符号只是将数据源添加到目标数据后。
"|"
管道符"|"将一个命令的输出数据提取出来,然后将提取的数据作为另一个命令的输入。