Windows批处理中for命令支持五种实用循环:一、for /L按数字范围执行;二、for遍历当前目录文件批量操作;三、for /F解析文本逐行处理;四、嵌套for实现二维组合;五、结合setlocal enabledelayedexpansion动态更新变量。

如果您希望在Windows系统中通过批处理脚本自动重复执行某项任务或对多个文件进行统一操作,则可以利用bat脚本中的for命令实现循环控制。以下是几种常见且实用的for循环用法及其对应的操作步骤:
一、基础for /L循环:按数字范围重复执行命令
该方法适用于需要按指定次数重复运行某条命令的场景,例如连续创建10个空文本文件或执行10次ping测试。for /L语法支持起始值、步长和结束值的定义,形成可控的数值迭代。
1、打开记事本,输入以下内容:
for /L %%i in (1,1,5) do echo 正在执行第%%i次循环 >> log.txt
2、将文件另存为“loop_demo.bat”,编码选择ANSI或UTF-8无BOM格式。
3、双击运行该bat文件,系统将在当前目录生成log.txt,并写入5行带序号的日志记录。
二、for遍历当前目录文件:批量重命名或复制
此方式用于对当前文件夹下所有匹配类型的文件逐个处理,常用于重命名、移动、复制或调用外部工具处理。变量%%f代表每次迭代中捕获的完整文件路径。
1、新建文本文件,输入以下内容:
for %%f in (*.txt) do ren "%%f" "backup_%%f"
2、保存为“rename_txt.bat”,确保其位于含多个.txt文件的目录中。
3、以管理员身份运行cmd,切换至该目录后执行rename_txt.bat,所有.txt文件前缀将被添加“backup_”。
三、for /F解析文本内容:逐行读取并处理数据
当需要从日志、列表或配置文件中提取信息并逐行执行命令时,for /F可读取文件内容、命令输出或字符串,按指定分隔符切分后赋值给变量。
1、创建一个名为list.txt的文件,每行写一个文件名(如file1.docx、file2.xlsx)。
2、在同目录新建bat文件,输入以下内容:
for /F "delims=" %%l in (list.txt) do if exist "%%l" echo "%%l存在" >> check_result.txt
3、保存后运行,脚本会检查list.txt中每一行所列文件是否存在于当前目录,并将结果追加写入check_result.txt。
四、嵌套for循环:二维组合操作
在需对两组独立集合进行笛卡尔积式处理时(例如为多个用户分配多个权限模板),可使用for嵌套结构。外层循环变量为%%i,内层为%%j,二者作用域互不干扰。
1、新建bat文件,输入以下内容:
for %%i in (userA userB) do for %%j in (read write exec) do echo 给%%i赋予%%j权限 >> perm_assign.txt
2、保存为“assign_perm.bat”并运行。
3、生成perm_assign.txt,共包含6行权限分配语句,覆盖全部组合情况。
五、for结合setlocal enabledelayedexpansion实现动态变量更新
普通for循环中百分号变量无法在循环体内实时反映变化值,启用延迟扩展后可用!var!语法获取每次迭代中的最新变量内容,适用于累计计数、条件拼接等场景。
1、新建bat文件,输入以下内容:
setlocal enabledelayedexpansion & set count=0 & for %%f in (*.log) do (set /a count+=1 & echo 文件!count!: %%f)
2、保存为“count_logs.bat”,放置于含.log文件的目录中。
3、运行后将在控制台逐行列出每个.log文件及其对应序号,序号随循环实时递增。










