如何编写循环运行的bat批处理任务实现文件名日期格式修改
批处理实现PDF文件名日期转换+循环监听方案
脚本功能
- 持续监听指定文件夹A中的PDF文件
- 自动识别文件名中
DD.MM.YYYY格式的日期,转换为YYYYMMDD格式 - 重命名后的文件自动输出到目标文件夹B,源文件可保留或自定义删除
- 自动跳过已处理过的文件,避免重复操作
完整脚本代码
@echo off setlocal enabledelayedexpansion :: 配置源文件夹A和目标文件夹B路径,替换为你实际的路径 set "SOURCE_DIR=.\A" set "TARGET_DIR=.\B" :: 若目标文件夹不存在则自动创建 if not exist "%TARGET_DIR%" md "%TARGET_DIR%" echo 监听已启动,正在扫描文件夹 %SOURCE_DIR% 中的PDF文件... echo 停止监听请直接关闭窗口或按Ctrl+C :loop :: 遍历源文件夹下所有PDF文件 for %%f in ("%SOURCE_DIR%\*.pdf") do ( set "filename=%%~nf" set "ext=%%~xf" :: 按下划线拆分文件名,第6段即为DD.MM.YYYY格式的日期(对应示例文件名结构) for /f "tokens=1-6* delims=_" %%a in ("!filename!") do ( set "date_str=%%f" :: 拆分日期为日、月、年 for /f "tokens=1-3 delims=." %%i in ("!date_str!") do ( set "new_date=%%k%%j%%i" :: 拼接新文件名 set "new_filename=%%a_%%b_%%c_%%d_%%e_!new_date!_%%g!ext!" :: 仅当目标文件不存在时才执行复制,避免重复处理 if not exist "%TARGET_DIR%\!new_filename!" ( copy "%%f" "%TARGET_DIR%\!new_filename!" >nul echo 已处理文件:%%~nxf -> !new_filename! :: 如果需要处理后删除源文件,取消注释下一行 :: del "%%f" /f /q ) ) ) ) :: 每次扫描间隔5秒,可按需修改数字调整间隔 timeout /t 5 /nobreak >nul goto loop
使用说明
- 将脚本中
SOURCE_DIR和TARGET_DIR的路径替换为你本地实际的文件夹A、B路径,路径存在空格时需保留外层引号 - 扫描间隔可修改
timeout /t 5中的数字调整,单位为秒 - 如果需要处理完成后自动删除源文件夹A中的原文件,删除
del "%%f" /f /q前的::注释即可 - 脚本保存为
.bat后缀的文件,双击即可启动运行,关闭窗口或按Ctrl+C即可终止监听
内容的提问来源于stack exchange,提问作者kenwin
相关产品推荐
相关产品推荐

