批量修改文件名
将手机照片复制到电脑相册目录的时候,经常出现文件名重复提示文件覆盖的问题。比如,相册目录下有如下4个文件:
AAA_1000.JPG
BBB_139.png
CCC_10086.gif
IMG_12306.webp
如何批量修改文件名,实现如下效果:
- 1、以 IMG_ 开头
- 2、中间是连续数字,编号从 1001 开始
- 3、不要改动原文件的格式
批量重命名后的效果如下:
IMG_1001.JPG
IMG_1002.png
IMG_1003.gif
IMG_1004.webp
- 将如下内容保存为
rename.bat,然后放到指定目录下面,然后双击即可。
注意:若文件名包含空格则会导致重命名失败
@echo off
setlocal enabledelayedexpansion
echo 第1步, 针对特定类型的文件, 按照日期排序
dir *.jpg /od /b > file.txt
dir *.png /od /b >> file.txt
dir *.gif /od /b >> file.txt
dir *.webp /od /b >> file.txt
echo 第2步, 添加临时前缀, 直接ren会出现新文件名已存在而失败
for /f %%f in (file.txt) do (
if not "%%f"=="%~nx0" (
if not "%%f"=="temp_%%f" (
ren "%%f" "temp_%%f"
)
)
)
echo 第3步, 文件名已变化, 再次排序是为了避免重命名失败
dir *.jpg /od /b > file.txt
dir *.png /od /b >> file.txt
dir *.gif /od /b >> file.txt
dir *.webp /od /b >> file.txt
echo 第4步, 正式重命名
set count=1001
for /f %%f in (file.txt) do (
if not "%%f"=="%~nx0" (
set "newName=IBF_!count!"
set "newName=!newName:~-8!%%~xf"
ren "%%f" "!newName!"
set /a count+=1
)
)
echo success, rename %count% files
del file.txt