Never save something for a special occasion. Every day in your life is a special occasion.
分类:
2010-12-28 19:53:32
用法(批处理中%要双写):
for %variable in (set) do command [command-parameters]
参数:
%%variable 或 %variable
代表可替换的参数。for 命令使用在 set 中指定的每个文本字符串替换 %%variable(或 %variable),直到此命令(在 command-parameters 中指定)处理所有的文件为止。注意,变量名区分大小写。
(set)
目标集——文件(s)或文本字符串。
command
要在每个目标上执行的命令。
command-parameters
command的参数。
如果启用了命令扩展,将支持如下 for 命令的其他格式:
/D 限于目录
for /D [%% | %]v in (set) docommand [command-parameters]
如果 set 包含通配符(* 和 ?),则指定与目录名匹配,而不是文件名。
/R 递归
for /R [[drive :]path] [%% | %]v in (set) docommand [command-parameters]
遍历目录树[drive:]path。若未指定 [drive:]path 则默认为当前目录。如果 set 只是一个句号 (.) 字符,则只列举目录树。
/L 数列
for /L [%% | %]v in (start,step,end) do command [command-parameters]
数列示例:
(1,1,5) 即 1 2 3 4 5
(5,-1,1) 即 5 4 3 2 1
/F 文件解析
for /F ["options"] [%% | %]v in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]v in ("literal string") do command[command-parameters]
for /F ["options"] [%% | %]v in ('command') do command [command-parameters]
或者,如果出现 usebackq 选项:
for /F ["options"] [%% | %]v in (filenameset) do command [command-parameters]
for /F ["options"] [%% | %]v in ('literal string') do command [command-parameters]
for /F ["options"] [%% | %]v in (`command`) docommand [command-parameters]
filenameset 参数指定文件集。在继续到 filenameset 中的下一个文件之前,每个文件都会被打开、读取和处理。
针对每个文件,每一次for循环将读取一个文本行,根据delims指定的字符将文本行分割为域,第一个域赋值给%v,第二个域赋值给%(v+1),依此类推。完成一个文本行后进入下一次for继续处理下一行,直到所有文件都处理完。
通过“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