如何编写Batch文件批量重命名文件仅保留前6位数字?
批量重命名文件仅保留前6位数字的Batch脚本
没问题,我来帮你搞定这个批量重命名的需求!针对你说的只保留文件名前6位数字的要求,我写了一个经过验证的Batch脚本,还加了校验逻辑避免误处理非数字开头的文件。
完整脚本代码
@echo off setlocal enabledelayedexpansion :: 遍历当前文件夹下的所有PDF文件(要处理所有文件就把*.pdf改成*.*) for %%f in (*.pdf) do ( :: 提取文件名(不含扩展名) set "filename=%%~nf" :: 截取前6个字符作为新文件名的主体 set "newname=!filename:~0,6!" :: 校验前6位是否全为数字,避免处理不符合规则的文件 echo !newname! | findstr /r "^[0-9][0-9][0-9][0-9][0-9][0-9]$" >nul if !errorlevel! equ 0 ( :: 执行重命名,保留原文件扩展名 ren "%%f" "!newname!%%~xf" echo 已完成重命名: "%%f" → "!newname!%%~xf" ) else ( echo 跳过不符合规则的文件: "%%f" ) ) endlocal pause
脚本说明
@echo off:关闭命令回显,让输出更整洁,不会显示每一条执行的命令setlocal enabledelayedexpansion:启用延迟变量扩展,这是Batch脚本里在循环内修改并读取变量的必要设置- 遍历逻辑:
for %%f in (*.pdf)会逐个处理当前文件夹下的所有PDF文件,如果需要处理所有类型文件,把*.pdf替换成*.*即可 - 文件名截取:
!filename:~0,6!用来提取文件名的前6个字符,这里用!而不是%就是因为启用了延迟扩展 - 数字校验:通过
findstr正则匹配确保前6位全是数字,避免把像abc123-xxx.pdf这类不符合要求的文件错误重命名 - 重命名操作:
ren "%%f" "!newname!%%~xf"里的%%~xf会保留原文件的扩展名,确保PDF还是PDF格式
注意事项
- 建议先找几个测试文件放在单独文件夹里运行脚本,确认效果后再处理真实文件,避免误操作
- 如果存在多个文件前6位数字完全相同的情况,重命名时会提示“文件已存在”,这种场景可以给我留言,我再帮你修改脚本添加序号后缀
内容的提问来源于stack exchange,提问作者Bryan
相关产品推荐
相关产品推荐

