这段批处理脚本的主要目的是在指定目录下找出符合特定命名规则的文本文件,把这些文件名存到一个文本文件里,同时在处理过程中展示查找进度。下面是详细的文字说明:
脚本整体流程
初始化设置:关闭命令行窗口中命令的回显,启用延迟环境变量扩展功能,这能让变量在代码块里动态更新。
定义变量:设定要查找文件的源目录、存储符合条件文件名的文本文件,以及用于记录已找到文件数量的计数器,初始值设为 0。
统计文件总数:遍历源目录下所有文件名包含 “Relation” 和 “202503” 且扩展名为 .txt 的文件,统计符合条件的文件总数。
检查查找结果:若没找到符合条件的文件,就输出提示信息,暂停脚本执行等待用户操作,然后退出脚本。
遍历文件并输出:再次遍历符合条件的文件,每找到一个文件,计数器就加 1,计算当前查找进度并输出,同时把该文件名追加到指定的文本文件中。
输出总结信息:输出找到的符合条件的文件总数以及存储文件名的文本文件路径,暂停脚本执行等待用户操作,最后退出脚本。
代码
@echo off
setlocal enabledelayedexpansion
set "sourceDir=D:\文件上传\已完成\2025-03"
set "outputFile=matched_files.txt"
set "count=0"
:: 先统计符合条件的文件总数
for %%F in ("%sourceDir%\*Relation*202503*.txt") do (
set /a total_count+=1
)
if !total_count! equ 0 (
echo 未找到符合条件的文件。
pause
exit /b
)
:: 开始遍历并输出文件名,同时显示进度
for %%F in ("%sourceDir%\*Relation*202503*.txt") do (
set /a count+=1
set "progress=!count! / !total_count!"
echo [进度:!progress!]
echo %%~nxF>>"%outputFile%"
)
echo 共找到 %count% 个符合条件的文件,文件名已导出到 %outputFile%
pause
exit /b各部分功能
- 脚本开头设置:
- @echo off:避免在脚本执行时显示每条命令本身,让命令行窗口更简洁。
- setlocal enabledelayedexpansion:确保在代码块内变量能动态更新,像 for 循环里就能正确使用变量。
- 变量设置:
- sourceDir:指定查找文件的具体目录。
- outputFile:指定存储符合条件文件名的文本文件。
- count:记录当前已找到的符合条件的文件数量。
- 统计符合条件的文件总数:
- 通过 for 循环遍历源目录下符合命名规则的文件,每找到一个文件,total_count 就加 1。
- 检查是否找到符合条件的文件:
- 若 total_count 为 0,说明没找到符合条件的文件,此时输出提示信息,暂停脚本执行,等待用户按下任意键后退出脚本。
- 遍历符合条件的文件并输出文件名,同时显示进度:
- 再次使用 for 循环遍历符合条件的文件。
- 每找到一个文件,count 加 1,计算当前查找进度并输出。
- 把当前找到的文件名追加到指定的文本文件中。
- 输出总结信息并暂停脚本:
- 输出找到的符合条件的文件总数以及存储文件名的文本文件路径。
- 暂停脚本执行,等待用户按下任意键。
- 退出当前批处理脚本。
通过以上步骤,脚本就能完成在指定目录下查找特定文件名的文本文件,将文件名导出到指定文本文件,并在查找过程中显示进度的任务。
本文链接:https://blog.lahong.top/post/19.html 本文及相关素材著作权归原作者所有,未经书面授权禁止擅自转载、摘抄、改编及商业使用,违者将追究法律责任



