使用Command Prompt/Batch批量重命名文件并保持序号位数一致
批处理批量重命名照片:解决序号前导零与位数一致问题
你原来的代码问题出在序号没有自动补前导零,当数字从两位数跳到三位数(比如99→100)时,没法自动维持固定位数的格式。下面是修改后的代码,完全支持自定义前缀、起始序号,还能保持序号的固定位数:
@echo off pushd %~dp0 setlocal EnableDelayedExpansion :: --- 这里是配置区,按需修改即可 --- set "prefix=Goodlooking " :: 文件名前缀,注意末尾的空格如果需要就保留 set "start_num=98" :: 起始序号 set "digit_length=4" :: 序号的固定位数(比如4位就是0098、0100这种格式) :: --- 配置区结束 --- set "current_num=%start_num%" :: 遍历当前目录下所有JPG文件(要递归子目录的话,把下面的行改成 for /r %%i in (*.jpg) do) for %%i in (*.jpg) do ( :: 生成带前导零的固定位数序号:先补足够多的零,再截取最后N位 set "padded_num=0000000000!current_num!" :: 这里补10个零,足够覆盖大部分位数需求 set "padded_num=!padded_num:~-%digit_length%!" :: 执行重命名 ren "%%i" "!prefix!!padded_num!.jpg" :: 序号自增 set /a current_num+=1 ) endlocal popd echo 重命名完成! pause
代码说明
- 配置区简单易用:你只需要修改
prefix、start_num、digit_length三个变量就行:- 比如想把前缀改成
Vacation_,起始序号从1开始,位数设为3,就会生成Vacation_001.jpg、Vacation_002.jpg... - 如果不需要前缀末尾的空格,直接去掉
prefix值里的空格即可。
- 比如想把前缀改成
- 自动补前导零:通过先给序号补一串足够多的零,再截取最后
digit_length位的方式,不管序号是1位、2位还是多位,都能自动变成固定位数的格式(比如98→0098,100→0100)。 - 可选递归处理:如果需要处理子目录里的照片,把
for %%i in (*.jpg)改成for /r %%i in (*.jpg)就行。
注意事项
- 运行前建议先备份照片,避免重命名过程中出现意外(比如文件名重复导致的失败)。
- 批处理会处理当前目录下所有JPG文件,如果你只想处理特定前缀的原文件(比如原文件是IMG_*.JPG),可以把
(*.jpg)改成(IMG_*.jpg)。
内容的提问来源于stack exchange,提问作者garrison
相关产品推荐
相关产品推荐

