在Bat批处理中,for是最为强大的命令语句,它能实现解析文本内容、遍历文件路径、数值递增/递减等操作;配合if、call、goto等流程控制语句,可以实现脚本复杂的自动化、智能化操作。
1. for命令基础
for命令,对一组文件中的每一个文件执行某个特定命令。
语法格式:
参数说明:
%variable 指定可替换的参数。
(set) 指定一个或一组文件。可以使用通配符。
command 指定对每个文件执行的命令。
command-parameters 为特定命令指定参数或命令行开关。
在批处理程序中使用 FOR 命令时,指定变量请使用 而不要用 %variable。变量名称是区分大小写的,所以 %i 不同于 %I。
一个简单的例子:
运行结果:
for语句中in和do是必须有的;
in之后,do之前,也就是set的括号不能省略;
括号中的set可以是一个或多个字符串或变量,每一个字符串或变量称之为一个元素,每个元素之间可以用空格、tab键、逗号、分号、等号进行分隔;
实例:演示分隔
运行结果:
当括号中的ABC被分隔符分隔成3个元素后,for会对每一个元素执行一次命令,所以do后面的命令会执行3次;
第1次,把A这个字符作为变量a的值,带入do后的语句执行,输出字符A;第2次,把B这个字符替换为变量a的值,输出字符B,如此循环,第3次输出字符C,把所有元素遍历一遍后,才执行下一条命令pause。
实例:使用for语句显示当前目录下的文件名称,并查找以.md结尾的文件。
运行结果:
2. for /D 语句扩展
for /D语句的作用:如果集(set)中包含通配符,则指定与目录名匹配,而不与文件名匹配。也就是通过for /D来打印出目录名,语法格式:
实例:for语句加/D命令与不加/D命令的对比。
运行结果:
实例:显示C盘下的目录,不包含子目录
运行结果:
3. for /R 语句扩展
检查以 [drive:]path 为根的目录树,指向每个目录中的 FOR 语句。
如果在 /R 后没有指定目录规范,则使用当前目录。如果集(set)仅为一个单点(.)字符,则枚举该目录树。
语法格式:
实例:不指定目录,显示当前目录下的所有文件,包括子目录下的文件。
运行结果:
实例:在D盘搜索Notepad--.exe程序并打开。
运行结果:
4. for /L 语句扩展
for /L的作用是以增量形式从开始到结束生成一个数字序列。语法格式:
start:创建序列的开始位置;
step:创建序列时单步距离;
end:创建序列结束位置;
for /L 以增量形式从start开始,每次增加step,直到end这个数字的序列。
实例:
运行结果:
实例:使用for语句创建100个txt文件
运行结果:
通过Bat批处理脚本创建100个txt文件只需几秒钟,效率非常高。
领取专属 10元无门槛券
私享最新 技术干货