CMD 常用命令74 条

for 循环基础

遍历文件集合、目录、数字序列与文本行:CMD 最灵活也最容易踩坑的语法,命令行与批处理的百分号写法不同。

Windows 运维速查系统更新于 2026-10-13

for 循环基础

for 用于遍历集合执行命令,是 CMD 里最灵活也最容易踩坑的语法。它有四种常用形态:默认遍历文件集合、加上 /d 遍历目录、加上 /r 递归目录树、加上 /l 遍历数字序列、加上 /f 解析文本或命令输出。命令行与批处理里的百分号写法不同,这是最高频的错误来源。

基本信息

适用平台Windows CMD(cmd.exe)
语法for %i in (集合) do 命令
形态开关/d 遍历目录、/r 递归、/l 数字序列、/f 解析文本或命令输出
百分号规则命令行写 %i,批处理文件里必须写 %%i
/f 选项tokens 指定列、delims 指定分隔符、skip 跳过行、usebackq 支持反引号
默认行为/f 默认按空格与制表符分词,并跳过空行

典型使用场景

  • 批量处理同类型文件,例如逐个压缩、改名或复制
  • 遍历目录树查找或统计文件
  • 生成连续数字序列做计数循环
  • 解析 CSV 或命令输出,提取需要的列
  • 在循环内累加计数,用于统计与判断

常用示例

常用示例
REM 命令行逐项输出
for %i in (a b c) do echo %i
REM 数字序列:起始,步长,结束
for /L %i in (1,1,5) do echo 第 %i 次
REM 遍历当前目录下的日志文件
for %f in (*.log) do echo 处理 %f
REM 递归遍历目录树,结果含完整路径
for /r D:\src %f in (*.txt) do echo %f
REM 解析 CSV 前两列,批处理里要写 %%a 与 %%b
for /f "tokens=1,2 delims=," %a in (data.csv) do echo %a - %b
REM 解析命令输出需要 usebackq
for /f "usebackq tokens=*" %i in (`ipconfig ^| findstr IPv4`) do echo %i

形态与用途

写法用途注意
for %i in (集合)遍历文件集合支持通配符
for /d遍历目录而非文件只取目录名
for /r递归遍历目录树结果包含完整路径
for /l生成数字序列格式为起始 步长 结束
for /f解析文本或命令输出需按需指定 tokens 与 delims
命令行里写 %i,写进批处理文件时必须改成 %%i。把命令行示例直接粘进 bat 文件,是最常见的失败原因。
for /f 默认以空格与制表符分词并跳过空行。处理逗号分隔的文本要显式设置 delims,否则取到的列会错位。

易错点

  • 命令行与批处理的百分号写法混用是最常见错误,粘贴示例前先确认运行环境
  • for /f 未指定 delims 时按空格分词,CSV 会解析出错误的列
  • 括号块内使用 :: 注释会引发解析错误,块内注释应统一用 REM
  • 循环内要读取同一块中刚赋值的变量时必须启用延迟变量扩展,用感叹号引用
  • 路径含空格时未加引号,循环变量会被拆成多段导致命令失败

数据来源与参考

  • Microsoft Learn:for 命令

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌