电脑课堂
柔彩主题三 · 更轻盈的阅读体验

批处理文件for循环用法详解,轻松搞定批量任务

发布时间:2025-12-19 17:40:53 阅读:434 次

批处理中for循环的基本写法

在Windows批处理脚本里,for循环是处理重复任务的利器。比如你每天要整理下载文件夹里的文档,手动一个个移动太麻烦,写个for循环自动跑一遍就完事了。

最基本的格式长这样:

for %%i in (集合) do (
    命令
)

注意这里是两个%号(%%i),只有在命令行直接运行时才用单个%,写成批处理文件保存后必须是%%。

遍历文件的例子最实用

假设你有一堆.jpg图片想统一复制到另一个文件夹,可以这么写:

@echo off
for %%f in (*.jpg) do (
    copy "%%f" "D:\图片备份\"
)

这段脚本会把当前目录下所有.jpg结尾的文件都复制过去。换成move就是剪切,加上if exist还能判断目标是否存在,避免重复操作。

处理带空格的文件名?加引号就对了

有些文件名带空格,比如“我的照片 2024.jpg”,不加处理会出错。这时候变量要用双引号包起来:

@echo off
for %%f in (*.jpg) do (
    echo 正在处理:"%%f"
    copy "%%f" "E:\归档\"
)

用for读取文本行也很常见

比如你有个list.txt,每行一个文件名,想逐个检查是否存在:

@echo off
for /f "delims=" %%i in (list.txt) do (
    if exist "%%i" (
        echo %%i 找到了
    ) else (
        echo %%i 没找到!
    )
)

/f 参数专门用来解析文本内容,"delims="表示不分割字段,整行当一个值处理,适合包含空格的路径。

跳过某些行或设置读取行数

有时候前几行是标题不想处理,可以用skip=1跳过第一行:

for /f "skip=1 delims=" %%i in (data.csv) do (
    echo 处理数据:%%i
)

如果只想处理前5行,可以用tokens和计数技巧配合,或者结合goto和set来控制次数。

实际应用场景举个例

你在公司做行政,每周都要把各部门交上来的Excel表格汇总归档。写个批处理脚本放在文件夹里,双击一下自动把这些.xls和.xlsx文件移到“已归档”目录:

@echo off
if not exist 已归档 mkdir 已归档
for %%f in (*.xls *.xlsx) do (
    move "%%f" "已归档\"
)
echo 所有表格已归档!
pause

下次再收表,点一下就行,不用自己拖来拖去。