求助:修复无法批量重命名日期前缀PDF文件的Batch脚本
问题排查与修正
你的脚本核心问题是通配符匹配错误,导致没有找到任何需要重命名的文件,自然不会执行重命名操作。
具体问题点
原脚本中for %%f in (??????_*.pdf)的通配符用了6个问号??????,但你的目标文件名前缀是8位的日期格式yyyymmdd(比如20230101),6个问号只能匹配6个字符的前缀,完全匹配不到你的目标文件。
修正后的脚本
@echo off setlocal enabledelayedexpansion set "directory=C:\Users\user1\Downloads\Rename" cd /d "%directory%" :: 修正通配符为8个问号,匹配8位日期前缀 for %%f in (????????_*.pdf) do ( set "filename=%%~nf" set "extension=%%~xf" set "datepart=!filename:~0,8!" set "docpart=!filename:~9!" set "newname=!docpart!_!datepart!!extension!" ren "%%f" "!newname!" ) :: 增加提示:检查是否有文件被处理 if %errorlevel% equ 0 ( echo 文件已完成重命名。 ) else ( echo 未找到符合格式的PDF文件。 ) pause
额外优化说明
- 修正了通配符为
????????_*.pdf,确保能匹配8位日期前缀的PDF文件 - 增加了
errorlevel判断,当没有匹配到文件时会给出明确提示,避免你误以为脚本执行成功 - 其他逻辑(拆分日期和文档名、拼接新文件名)都是正确的,延迟扩展的使用也没问题
内容的提问来源于stack exchange,提问作者name_hidden
相关产品推荐
相关产品推荐

