windows批处理中for命令实现文件循环处理:for %%f in (*.log)处理当前目录文件;for /r遍历子目录;for /f解析文本列表;for /l按数字范围循环。
windows 批处理脚本中实现循环遍历处理多个文件,核心是 for 命令。它不依赖外部工具,原生支持,写法简洁、执行稳定。关键在于根据需求选对 for 的变体,并注意变量写法和路径处理细节。
只处理当前目录的某类文件(如所有 .log)
这是最常用、效率最高的方式,直接利用通配符匹配,无需调用 dir:
- 在目标文件夹新建一个 process_logs.bat,用记事本打开,写入:
@echo off
for %%f in (*.log) do (
echo 正在压缩: %%f
7z a "%%~nf.7z" "%%f" >nul
)
- 保存后双击运行(确保已安装 7-Zip 并加入系统 PATH);
- %%f 是每次取到的完整文件名(含扩展名),%%~nf 表示去掉扩展名的文件名,方便构造新文件名;
- 注意:批处理中变量必须写成 %%f,命令行直接执行时才用 %f。
递归遍历所有子目录中的文件
需要处理整个文件夹树(比如清理所有临时文件)时,用 for /R:
- 新建 clean_temp.bat,内容如下:
@echo off
setlocal enabledelayedexpansion
for /R %%a in (*.tmp) do (
set "full=%%a"
echo 删除: !full!
del "!full!"
)
- for /R 后面可加路径(如 for /R "D:\data"),不加则默认从当前目录开始;
- 涉及变量赋值再引用(如 set full=%%a 后又用 !full!),必须加 setlocal enabledelayedexpansion;
- 路径含空格时,一定要用英文引号包裹变量,如 "!full!"。
按文件列表或文本内容循环(灵活可控)
当要处理的文件名来自外部清单(如 list.txt 每行一个文件名),用 for /F 解析文本:
一款AI工具,主要用于将编码任务调度到本地 OpenAI Codex CLI,支持后台执行、状态轮询以及可交互式回答的澄清问题。适用于 OpenClaw 需要……,适合需要提升相关任务效率的用户。
- 先准备一个 list.txt,内容如:
report_Q1.pdf
summary.xlsx
notes.docx
- 再建 copy_to_backup.bat:
@echo off
for /F "usebackq eol=; delims=" %%i in ("list.txt") do (
if exist "%%i" (
copy "%%i" "backup\%%i"
) else echo 警告:文件不存在 — %%i
)
- "usebackq" 允许用英文引号括住文件名;
- "eol=;" 表示以分号开头的行被跳过(可作注释);
- "delims=" 关闭默认分隔符(避免文件名含空格时被截断)。
按数字范围循环构造文件名或重复操作
适合批量生成测试文件、重命名序列文件等场景,用 for /L:
- 例如创建 10 个空日志文件:gen_logs.bat
@echo off
for /L %%i in (1,1,10) do (
echo 日志条目 #%%i > "log_%%i.txt"
)
- 语法为 (起始值,步长,结束值),这里表示从 1 到 10,每次加 1;
- 可用于生成 log_001.txt 到 log_100.txt:把 %%i 替换为 %%j,再嵌套一层控制位数,或配合 if 判断补零。










