咨询电话:010-86865713     QQ:284598818

聚源SEO培训,免费网页基础培训,终生会员制,快乐学习,轻松赚钱----详情查看

批处理命令详解

批处理命令详解

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. )。要显示管道 (|) 或重定向字符(),请在管道 (|) 或重定向字符(例如,^>、^”或管道 (|)。

回到页首

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”参数可以覆盖默认的解析行为。这是一个引用字符串,它包含一个或多个关键字以指定不同的解析选项。关键字是:

关键字 说明
eol=c 指定行尾注释字符(只一个字符)
skip=n 指定在文件的开头跳过的行数。
delims=xxx 指定定界符集合。这将替换空格和制表符的默认分隔符集。
tokens=x,y,m-n 指定将令牌从每行传递到每个反复的正文。这将导致分配其他变量名。m-n 格式是一个范围,指定从 mth 到 nth 的令牌。如果在令牌 = 字符串中最后一个字符是星号,则将分配附加的变量,并在解析最后一个令牌后在行上接收剩余的文本。
usebackq 指定将右引号字符串作为命令执行,单引号字符串是文字字符串命令,您可以使用双引号包括 filenameset 中的文件名。

变量替换

此外,已经增强了 for 变量引用的替换修改程序。现在可以使用下列可选的语法(对于任何变量 I):

变量(使用修改程序) 说明
%~I 展开删除了周围的任何引号 (") 的 %I
%~fI 将 %I 展开到完全合格的路径名
%~dI 只将 %I 展开到驱动器号
%~pI 只将 %I 展开到路径
%~nI 只将 %I 展开到文件名
%~xI 只将 %I 展开到文件扩展名
%~sI 展开路径以只包含短名称
%~aI 将 %I 展开到文件的文件属性
%~tI 将 %I 展开到文件的日期/时间
%~zI 将 %I 展开到文件大小
%~$PATH:I 搜索 PATH 环境变量所列出的目录,并将 %I 展开开到第一个找到结果的全部合格名称。如果没有定义环境变量名,或搜索后没有找到文件,则此修改程序将扩展为空字符串。

修改程序可以合并以获得复杂的结果:

变量(使用合并的修改程序) 说明
%~dpI 只将 %I 展开到驱动器号和路径
%~nxI 只将 %I 展开到文件名和扩展名
%~fsI 将 %I 展开到只包含短名称的完整路径名
%~dp$PATH:I 在 PATH 环境变量所列出的目录中搜索 %I,并展开到第一个找到结果的驱动器号和路径
%~ftzaI 将 %I 扩展到与 dir 相似的输出行

例:要显示当前目录中扩展名为 .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),如下所示:

批处理脚本中的 %* 是引用所有参数的通配符。对于单个参数变量,扩展选项如下表所述。

变量 描述
%~1 扩展 %1 并删除所有引号 (")
%~f1 将 %1 扩展到完全合格的路径名
%~d1 将 %1 扩展到驱动器盘符
%~p1 将 %1 扩展到路径
%~n1 将 %1 扩展到文件名
%~x1 将 %1 扩展到文件扩展名
%~s1 扩展的路径仅包含短名称
%~a1 将 %1 扩展到文件属性
%~t1 将 %1 扩展到文件日期/时间
%~z1 将 %1 扩展到文件大小
%~$PATH:1 搜索 PATH 环境变量中列出的目录,并将 %1 扩展到发现的第一个目录的完全合格的名称。如果没有定义环境变量名称,或搜索没有找到文件,则此修改键扩展成空字符串。

修改键可以组合使用以得到复合结果:

变量 描述
%~dp1 将 %1 扩展到驱动器盘符和路径
%~nx1 将 %1 扩展到文件名和扩展名
%~dp$PATH:1 在 PATH 环境变量列出的目录中搜索 %1,并扩展到发现的第一个目录的驱动器盘符和路径
%~ftza1 将 %1 扩展到类似 dir 的输出行

%~ 修改键可能无法与 %* 一同使用。