批处理命令
来源:互联网 发布:淘宝货到付款怎么付 编辑:程序博客网 时间:2024/04/19 14:03
批处理命令
全部显示
注:这里介绍的是WIN2K下的批处理命令,与WIN9X稍有不同,主要区别在于对命令扩展的支持。
Call
Call
从一个批处理程序调用另一个批处理程序,而不使父批处理程序停止。
call [drive:][path] filename [batch-parameters]
call :label [arguments]
参数
[drive:][path] filename
指定要调用的批处理程序的位置和名称。filename 参数必须具有 .bat 或 .cmd 扩展名。
batch-parameters
指定批处理程序所需要的任何命令行信息。有关对 batch-parameters 的扩展,请参阅下面 arguments 部分。
:label
指定要批处理程序控制跳转到的标签。使用带该参数的 call 命令可以创建新的批处理文件环境,并将控制传到指定标签后的声明。第一次到达批处理文件的末端时(在跳转到标签后),在 call 语句后控制返回说明。第二次遇到批处理文件的末尾,批脚本将被退出。
不要在 call 命令中使用管道和重定向符号。可以创建调用自身的批处理程序;但是,必须提供退出条件。否则,父和子批处理程序可以无限循环。
回到页首
Goto
将 Windows 定向到由指定标签标记的批处理程序的行中。
goto label
参数
label
指定 Windows 应转到的批处理程序中的行。仅前八个字符有效,可以包括空格,但不能包含其他分隔符,如分号或等号。
使用 goto 命令和目标标签 :EOF 可以将控制转到当前批处理脚本文件的末尾,退出批处理文件但不定义标签。当使用 goto 和 :EOF 标签时,必须在标签前插入分号,例如:
goto :EOF
回到页首
Echo
打开或关闭请求回显功能,或显示消息。
echo [on | off] [message]
参数
on | off
指定是否打开命令回显功能。要显示当前的回显设置,请使用不带参数的 echo 命令。
message
指定需要 Windows 在屏幕上显示的文本。
要回显屏幕上的空行,可以键入 echo 然后加一个句号 (echo. )。要显示管道 (|) 或重定向字符(< 或 >),请在管道 (|) 或重定向字符(例如,^>、^< 或 ^|)的前面使用脱字符。要使用一个脱字符本身 (^),请在一行中使用两个 (^^)。
回到页首
If
在批处理程序中执行条件处理。如果 if 命令中指定的条件为真,Windows 将执行该条件后的命令。如果条件为假,Windows 将忽略 if 子句中的命令,并执行 else 子句中的任何命令(如果已经指定了命令)。
if [not] errorlevel number command [else expression]
if [not] string1==string2 command [else expression]
if [not] exist filename command [else expression]
启用了命令扩展:
if [/i] string1 compare-op string2 command [else expression]
if cmdextversion number command [else expression]
if defined variable command [else expression]
参数
not
指定只有当条件为假时 Windows 才能执行该命令。
errorlevel number
只有当前一个程序返回大于或等于 number 的退出代码时,才能指定真条件。
command
指定在符合前面的条件时 Windows 将执行的命令。
string1==string2
只有当 string1 和 string2 相同时才能指定真条件。这些值可以是文字字符串或批处理变量(例如,%1)。文字字符串不需要引号。
exist filename
如果 filename 存在,则指定真条件。
compare-op
以下三字母比较操作符中的一个:
/i
指定 /i 开关时,将强制字符串比较按忽略大小写情况进行。/i 开关也可以用于 if 的 string1==string2 格式。这些比较是通用的,如果 string1 和 string2 都由所有的数字组成,那么字符串将被转换为数字并且将执行数字比较。
cmdextversion number
cmdextversion 条件的作用就像是 errorlevel,但它需要与 Cmd.exe 的“命令扩展”功能相关联的内部版本号比较。第一版是 1,当重大的增强添加到命令扩展中时,版本号将增加 1。当禁用命令扩展时,cmdextversion 条件不会为真。
defined variable
defined 条件的作用就象是 exist,但它使用环境变量名,并且如果环境变量已经定义它将返回真值。使用该条件添加三个变量:%errorlevel%, %cmdcmdline% 和 %cmdextversion%。
%errorlevel% 扩展到 errorlevel 当前值的字符串表达式,如果没有名为 ERRORLEVEL 的环境变量,在这种情况下可取代它的值。程序运行后,下面的图解 errorlevel 使用:
goto answer%erorlevel% :answer0 echo Program had return code 0 :answer1 echo Program had return code 1
也可以在 compare-op 中使用上面列出的比较操作符:
if %errorlevel% LEQ 1 goto okay
%cmdcmdline% 在任何 Cmd.exe 处理之前扩展传递到 Cmd.exe 的源命令行,如果没有名为 cmdcmdline 的环境变量,在这种情况下可取代它的值。
%cmdextversion% 扩展到 cmdextversion 当前值的字符串表达式,如果没有名为 CMDEXTVERSION 的环境变量,在这种情况下可取代它的值。
expression
在 else 子句中,expression 由 Windows 命令和任何传递到命令的参数组成。
回到页首
Pause
暂停批处理程序的处理并显示消息,提示用户按任意键继续。
回到页首
Rem
使您可以在批处理文件或配置文件中加入注释。
rem [comment]
参数
comment
指定要作为注释的任何字符串。不能使用重定向字符“<”或“>”或管道 (|)。
回到页首
For
对一组文件中的每个文件运行指定的命令。
要在批处理程序中使用 for 命令,请使用以下语法:
for %%variable in (set) docommand [command-parameters]
要在命令提示符下使用 for,请使用以下语法:
for %variable in (set) do command [command-parameters]
参数
%%variable 或 %variable
代表可替换的参数。for 命令使用在 set 中指定的每个文本字符串替换 %%variable(或 %variable),直到此命令(在 command-parameters 中指定)处理所有的文件为止。使用 %% variable 在批处理程序中执行 for 命令。使用 % variable 通过命令提示符执行 for 命令。变量名区分大小写。
(set)
指定要用指定的命令处理的一个或多个文件或文本字符串。需要括号。
command
指定要在指定的 set 所包含的每个文件上执行的命令。
command-parameters
指定要用于指定命令(如果指定的命令要使用任何参数或开关)的任何参数或开关。
如果启用了命令扩展,将支持如下 for 命令的其他格式:
只限于目录
for /D [%% | %]variable in (set) docommand [command-parameters]
如果 set 包含通配符(* 和 ?),则指定与目录名匹配,而不是文件名。
递归
for /R [[drive :]path] [%% | %]variable in (set) docommand [command-parameters]
进入根目录树[drive:]path,在树的每个目录中执行 for 语句。如果在 /R 后没有指定目录,则假定为当前目录。如果 set 只是一个句号 (.) 字符,则只列举目录树。
迭代
for /L [%% | %]variable in (start,step,end) do command [command-parameters]
集合是一系列按步长量划分的、从头到尾的数字。这样,(1,1,5) 将生成序列 1 2 3 4 5,而 (5,-1,1) 将生成序列 (5 4 3 2 1)。
文件解析
for /F ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]variable in ("literal string") do command[command-parameters]
for /F ["options"] [%% | %]variable in ('command') do command [command-parameters]
或者,如果出现 usebackq 选项:
for /F ["options"] [%% | %]variable in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]variable in ('literal string') do command [command-parameters]
for /F ["options"] [%% | %]variable in (`command`) docommand [command-parameters]
filenameset 参数指定一个或多个文件名称。在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取和处理。
过程由读取文件、分成独立的文本行及然后将每行解析成零个或更多个令牌组成。然后使用设置为找到的一个或多个令牌字符串的变量值(或多个值)集合调用 for 循环体。默认情况下,/F 传递每个文件每一行的第一个空白分隔符号。
跳过空行。通过指定可选的“options”参数可以覆盖默认的解析行为。这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项。关键字是:
变量替换
此外,已经增强了 for 变量引用的替换修改程序。现在可以使用下列可选的语法(对于任何变量 I):
修改程序可以合并以获得复杂的结果:
例:要显示当前目录中扩展名为 .doc 或 .txt 的所有文件内容:
for %f in (*.doc *.txt) do type %f
回到页首
Shift
更改批处理文件中可替换参数的位置。
shift
启用命令扩展(Windows 2000 中的默认设置)后,shift 命令支持 /n 开关,该开关通知命令在第 n 个参数处开始更改,n 可以是从 0 到 8 的任何一个值。例如, SHIFT /2 将 %3 改为 %2,将 %4 改为 %3 等等,而 %0 和 %1 保持不变。
该命令的好处是使批处理文件可以接受 10 个以上参数,但要注意其操作是不可逆的。
回到页首
Setlocal
开始批处理文件中环境变量的本地化。本地化将持续到出现匹配的 endlocal 命令或者到达批处理文件结尾为止
setlocal option
参数
option
启用命令扩展(Windows 2000 中的默认设置)后,setlocal 批处理命令将接受可选参数,可以是 enableextensions 或 disableextensions。这将启用或禁用命令扩展,直到出现匹配的 endlocal 命令,无论 setlocal 命令之前的设置如何。
传递给 setlocal 命令参数时,setlocal 命令还设置 errorlevel 值。如果给定两个有效的参数之一,则 errorlevel 值设置为 0,否则设置为 1。
回到页首
Endlocal
结束批处理文件中环境更改的本地化,将环境变量还原为匹配 setlocal 命令前的值。
在批处理文件的结尾处有一个隐含的 endlocal 命令。
endlocal
如果启用了命令扩展(Windows 2000 中的默认设置),endlocal 命令将把命令扩展的启用/禁用状态还原到匹配的 setlocal 命令执行前的状态。
回到页首
%(可替换参数)
可替换参数 %0 和 %1 到 %9 可以放在批文件的任何位置。批处理文件运行时,%0 由批处理文件名替换,并且参数变量 %1 到 %9 由命令行上输入的相应参数替换。
% 参数扩展了批处理脚本参数变量 (%0, %1, ..., %9),如下所示:
批处理脚本中的 %* 是引用所有参数的通配符。对于单个参数变量,扩展选项如下表所述。
修改键可以组合使用以得到复合结果:
%~ 修改键可能无法与 %* 一同使用。
- 【批处理】批处理命令集合
- 批处理命令
- 批处理命令
- 批处理命令
- @批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 批处理命令
- 《ZhanQi》开发总结
- 空间统计学算法3
- 批处理资料
- 空间统计学算法4
- Java 类加载器(二)-类加载器的特性
- 批处理命令
- CTO专访:坚守还是追新,开发者如何应对新技术暗潮
- Convert.ToInt32与Int32.Parse
- SER研究笔记
- 空间统计学算法5
- 修改NetBeans默认JDK
- 转载:js技巧收集(200多个)
- 当我看到企业里一些员工被老板骂而想到...
- "S+S" 愿景:为互联网装上"Windows"[初稿]