<返回更多

DOS批处理命令:for循环详细说明及例子

2021-12-27    中微中科技
加入收藏

详细说明及例子 :

对一组文件中的每一个文件执行某个特定命令

普通格式:

FOR %variable IN (set) DO command [command-parameters]

在批处理程序中使用 FOR 命令时,指定变量请使用 %%variable而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I.

范例:

如c:/temp/myfile.txt内容如下,共4行

例:for %i in (my*) do @echo %i 结果 :myfile.txt (显示文件名)

扩展格式:

FOR /D %variable IN (set) DO command [command-parameters]

如果集中包含通配符,则指定与目录名匹配,而不与文件名匹配(只搜索指定目录下的目录,不再搜索指定目录下的目录的子目录,不搜索文件名)。

例:for /d %i in (*) do @echo %i 结果:是当前目录下的目录

DOS批处理命令:for循环详细说明及例子

 

FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]

检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。如果在 /R 后没有指定目录规范,则使用当前目录。如果集仅为一个单点(.)字符,则枚举该目录树。

例:for /r %i in (*.txt) do @echo %i 列举当前目录下的所有txt文件:

DOS批处理命令:for循环详细说明及例子

不指定目录即为当前目录

例:for /r . %i in (.) do @echo %i 列举当前目录下的所有目录,含子目录:

DOS批处理命令:for循环详细说明及例子

 

例:for /r . %i in (5.txt) do @echo %i 列举当前目录下所有5.txt的文件:注意“子目录”下没此文件,但依然列出来了,因为“子目录”-“电影2”下有5.txt文件

DOS批处理命令:for循环详细说明及例子

 

例:for /r c:/tmp %i in (5.txt) do @echo %i 列举c:/tmp目录下所有的5.txt文件,但此目录及子目录下根本没有5.txt文件,结果列出来了目录结构

DOS批处理命令:for循环详细说明及例子

 

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)


 

fileset 为一个或多个文件名。继续到 fileset 中的下一个文件之前, 每份文件都被打开、读取并经过处理。处理包括读取文件,将其分成一行行的文字,然后将每行解析成零或更多的符号。然后用已找到的符号字符串变量值调用 For 循环。

以默认方式,/F 通过每个文件的每一行中分开的第一个空白符号(既默认以空格作分隔符)。跳过空白行。你可通过指定可选 "options" 参数替代默认解析操作。这个带引号的字符串包括一个或多个指定不同解析选项的关键字。这些关键字为:

“usebackq”反转意思,把("c:/temp/myfile.txt")当成文件,面把('command')当成字符串。作用:是避免文件名中有空格时处理错误。四个例子如下:

b1,b2,b3,b4,b5

c1 c2 c3 c4 c5

d1,d2,d3,d4,d5

分析以下FOR循环:

FOR /F "eol=; tokens=2,3* delims=, " %i in (myfile.txt) do @echo %i %j %k

还可以在相邻字符串上使用 FOR /F 分析逻辑,方法是,用单引号将括号之间的 file-set 括起来。这样,该字符串会被当作一个文件中的一个单一输入行进行解析。

最后,可以用 FOR /F 命令来分析命令的输出。方法是,将括号之间的 file-set 变成一个反括字符串。该字符串会被当作命令行,传递到一个子 CMD.EXE,其输出会被捕获到内存中,并被当作文件分析。如以下例子所示:

会枚举当前环境中的环境变量名称。


另外,FOR 变量参照的替换已被增强。你现在可以使用下列选项语法(此处的"I"是in前面的变量的替换,如 for %a in() do时,I就是a):

可以组合修饰符来得到多重结果:

在以上例子中,%I 和 PATH 可用其他有效数值代替。%~ 语法用一个有效的 FOR 变量名终止。选取类似 %I 的大写变量名比较易读,而且避免与不分大小写的组合键混淆。

声明:本站部分内容来自互联网,如有版权侵犯或其他问题请与我们联系,我们将立即删除或处理。
▍相关推荐
更多资讯 >>>