for命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。
在批处理文件中使用FOR命令时,指定变量请使用%%variable
一,for用法
for { %%variable|%%variable } in (set) do command [ CommandLineOptions]
%%variable指定一个单一字母可替换的参数。
(set)指定一个或一组文件。可以使用通配符。
command指定对每个文件执行的命令。
command-parameters为特定命令指定参数或命令行开关。
示例1:
@echo off
for %%i in (c d e f) do (
cd /d %%i:
for /f "delims=" %%a in ('dir /s/b *.mp3') do (@echo %%a)
)
exit
搜索CDEF盘上所有的MP3。什么盘?cdef。什么文件?mp3。经过两层过滤检索到了硬盘上所有的MP3。
注意1:在批处理文件中使用FOR命令时,指定变量请使用%%variable
而不要用%variable。变量名称是区分大小写的。
注意2:空格、跳格、等号、分号都可以作为元素的隔离符号。
注意3:do后的括号就可以把多条命令嵌套在里面。
实例1:
for %%i in (robin hudashi zhengsheng glen) do (
echo hello,%%i!
echo "how are you?"
)
实例2:
for %%i in (robin=hudashi=zhengsheng glen) do (
echo hello,%%i!
echo "how are you?"
)
实例3:列出当前目录下都有哪些文件
for %%i in (*.*) do echo "%%i"
实例4:列出当前目录下所有的文本文件
for %%i in (*.txt) do echo "%%i"
实例5:出只用两个字符作为文件名的文本文件
for %%i in (??.txt) do echo "%%i"
注意1:列出当前目录下各种文件的方法中,最简单的还是用dir命令,但是,从以上代码中,各位可以加深对for语句执行流程的理解(用到了通配符*和?);
注意2:以上代码不能列出含有隐藏或系统属性的文件。
注意3:上面列出当前目录下文件的命令,并不会列出子目录下的文件。
如果命令扩展名被启用,下列额外的FOR命令格式会受到
支持:
二,for /D用法
FOR /D %variable IN (set) DO command [command-parameters]
如果集中包含通配符,则指定与目录名匹配,而不与文件
名匹配。
三,for /R用法
FOR /R [[drive:]path] %variable IN (set) DO command [command-parameters]
检查以[drive:]path为根的目录树,指向每个目录中的
FOR语句。如果在/R后没有指定目录,则使用当前
目录。如果集仅为一个单点(.)字符,则枚举该目录树。
实例6:列出G:\projects\work目录下所有的文本文件
for /r G:\projects\work %%i in (*.txt) DO (@echo %%i)
四,for /L用法
FOR /L %variable IN (start,step,end) DO command [command-para]
该集表示以增量形式从开始到结束的一个数字序列。
因此,(1,1,5)将产生序列1 2 3 4 5,(5,-1,1)将产生
序列(5 4 3 2 1)。
实例7:
for /L %%i in (1 1 5) DO (@echo NO:%%i)