关于多个文件夹里面图片命名问题
比如多个文件夹里面有多个子文件夹,我需要将每个最底层子文件夹里面的 jpg 图片命名开始都是 img00001,img00002......img00100,以此类推。请问怎样用最简单方法批量重命名。希望能 bat 文件代码解决。 本帖最后由 LuoShang 于 2024-11-3 21:21 编辑
@echo offsetlocal enabledelayedexpansionREM 根目录,你可以根据需要修改这个路径set "rootDir=C:\Your\Directory\Path"REM 递归遍历所有文件夹for /r "%rootDir%" %%d in (.) do ( REM 检查是否为最底层文件夹 if not exist "%%d*." ( REM 初始化计数器 set /a count=1 REM 遍历文件夹内的 JPG 文件 for %%f in ("%%d*.jpg") do ( REM 格式化计数器为5位数,前面补0 set "newName=img!count!000" set "newName=!newName:~0,9!.jpg" REM 重命名文件 ren "%%f" "!newName!" REM 增加计数器 set /a count+=1 ) ))echo 完成!pause @echo off
setlocal enabledelayedexpansion
rem 计数器初始化
set count=1
rem 遍历当前目录及其子目录
for /r %%D in (.) do (
pushd "%%D"
setlocal enabledelayedexpansion
rem 查找最底层文件夹中的 JPG 文件
if exist *.jpg (
for %%F in (*.jpg) do (
rem 格式化文件名
set filename=img!count!
set "newname=!filename:~0,7!0000!count!"
set "newname=!newname:~-5!.jpg"
ren "%%F" "!newname!"
set /a count+=1
)
)
endlocal
popd
)
endlocal
效果图:
https://pic.rmb.bdstatic.com/bjh/241103/12c698d2a675cd435d70a02b7daac4454569.png
本帖最后由 LuoShang 于 2024-11-3 21:23 编辑
LuoShang 发表于 2024-11-3 21:19
@echo offsetlocal enabledelayedexpansionREM 根目录,你可以根据需要修改这个路径set "rootDir=C:\Your\D ...
@echo off
setlocal enabledelayedexpansion
REM 根目录,你可以根据需要修改这个路径
set "rootDir=C:\Your\Directory\Path"
REM 递归遍历所有文件夹
for /r "%rootDir%" %%d in (.) do (
REM 检查是否为最底层文件夹
if not exist "%%d*." (
REM 初始化计数器
set /a count=1
REM 遍历文件夹内的 JPG 文件
for %%f in ("%%d*.jpg") do (
REM 格式化计数器为5位数,前面补0
set "newName=img!count!000"
set "newName=!newName:~0,9!.jpg"
REM 重命名文件
ren "%%f" "!newName!"
REM 增加计数器
set /a count+=1
)
)
)
echo 完成!
pause
ThemanRonin 发表于 2024-11-3 21:19
@echo off
setlocal enabledelayedexpansion
创建一个新的文本文件,将上述代码复制进去。
将文件另存为 cmd 文件放在你想要重命名图片的父文件夹中。
双击运行 cmd 文件会自动处理文件夹下所有jpg文件的命名。
注意备份
ThemanRonin 发表于 2024-11-3 21:19
@echo off
setlocal enabledelayedexpansion
大佬,效果图图片重命名前面没加有 img 呢 @echo off
setlocal enabledelayedexpansion
rem 设置起始编号
set count=1
rem 遍历所有子文件夹
for /r %%d in (.) do (
pushd %%d
rem 检查当前目录是否包含 JPG 文件
setlocal enabledelayedexpansion
set filecount=0
for %%f in (*.jpg) do (
set /a filecount+=1
rem 格式化文件名
set filename=img!count:~0,-1!%%~nf
ren "%%f" "!filename!.jpg"
set /a count+=1
)
endlocal
popd
)
endlocal
echo 完成重命名
pause
本帖最后由 ThemanRonin 于 2024-11-4 08:17 编辑
hsm2913299 发表于 2024-11-3 21:42
大佬,效果图图片重命名前面没加有 img 呢
不好意思,漏了,这个代码可以了
@echo off
setlocal enabledelayedexpansion
rem 计数器初始化
set count=1
rem 遍历当前目录及其子目录
for /r %%D in (.) do (
pushd "%%D"
setlocal enabledelayedexpansion
rem 查找最底层文件夹中的 JPG 文件
if exist *.jpg (
for %%F in (*.jpg) do (
rem 格式化文件名
set filename=img!count!
set "newname=!filename:~0,7!0000!count!"
set "newname=img!newname:~-5!.jpg"
ren "%%F" "!newname!"
set /a count+=1
)
)
endlocal
popd
)
endlocal
效果图:
https://pic.rmb.bdstatic.com/bjh/241104/269f5a02a820e749bc0746e11ccda75f4158.png
ThemanRonin 发表于 2024-11-4 08:16
不好意思,漏了,这个代码可以了
@echo off
setlocal enabledelayedexpansion
注意事项,不要把cmd文件命名为数字,不然会影响img文件数字的生成,重命名成字母即可,例如abc.cmd
@echo off
setlocal enabledelayedexpansion
rem 遍历所有子文件夹
for /r %%d in (*.jpg) do (
set /a count+=1
rem 格式化数字为固定长度
set "num=00000!count!"
set "newname=img!num:~-5!.jpg"
rem 重命名文件
ren "%%d" "!newname!"
)
你可以将上述代码保存为一个 .bat 文件,然后将该文件放置在包含多个文件夹和子文件夹的目录中运行。这个批处理脚本会遍历所有子文件夹,找到其中的 .jpg 文件并按照 img00001.jpg、img00002.jpg 等格式进行重命名。
请注意,在运行批处理文件之前,最好先备份你的文件,以免出现意外情况导致数据丢失。