找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 14033|回复: 9

[文件操作] [已解决]BAT脚本批量将图片名称改为连续数字

[复制链接]
发表于 2024-9-27 18:29:05 | 显示全部楼层 |阅读模式
本帖最后由 hxc1995 于 2024-9-29 14:49 编辑
  1. @echo off
  2. REM
  3. setlocal enabledelayedexpansion
  4. set count=10000
  5. REM count=10000, 命名从0001开始
  6. for /f "delims=" %%i in ('dir /b *.jpg,*.png,*.bmp,*.jpeg,*.gif') do call:Rename "%%~i"
  7. pause
  8. exit

  9. :Rename
  10. set /a count+=1
  11. if /i "%~1"=="!count:~1!%~x1" goto :eof
  12. if exist "!count:~1!%~x1" goto Rename
  13. echo 改名:%1 !count:~1!
  14. ren "%~1" "!count:~1!%~x1"
  15. REM 修改为000x
  16. goto :eof
复制代码
这个代码想改成将子文件下的内容重命名,怎么修改

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-9-27 19:24:39 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-27 19:25 编辑

回复 1# hxc1995

  1. @echo off &setlocal &set "n=0"
  2. for /f "delims=" %%F in ('dir /b/a-d *.jpg,*.png,*.bmp,*.jpeg,*.gif') do (call :R "%%F")
  3. pause&exit/b
  4. :R
  5.         set/a "n+=1"
  6.         set "_nF=0000%n%"
  7.         set "_nF=%_nF:~-4%"
  8.         if exist "%_nF%%~x1" goto :R
  9.         ren "%~1" "%_nF%%~x1" &exit/b
复制代码
发表于 2024-9-27 20:42:47 | 显示全部楼层
1楼的代码可能恰好满足了楼主的需求,但是实际上情况比较复杂。
楼主不妨“忘掉”1楼的代码,完整描述需求即可...另外涉及子文件夹,还有个序号是否重置问题
 楼主| 发表于 2024-9-28 09:47:18 | 显示全部楼层
本帖最后由 hxc1995 于 2024-9-28 09:52 编辑

回复 3# 77七
我是想把文件夹下所有子文件夹内的照片用数字命名排序,上述代码都只能处理文件夹内的照片,应该是要加:cd /d "%~dp0"这个代码吧
 楼主| 发表于 2024-9-28 09:53:10 | 显示全部楼层
回复 2# aloha20200628
这个只能处理文件夹内的照片,不能处理所有子文件夹内的照片
发表于 2024-9-28 10:21:55 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-9-28 10:38 编辑
  1. @echo off
  2. set n=10000
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     pushd "%%i"
  5.     setlocal enabledelayedexpansion
  6.     for /f "delims=" %%j in ('dir /b /a-d *.jpg,*.png,*.bmp,*.jpeg,*.gif 2^>nul') do (
  7.         set /a n+=1
  8.         ren "%%j" "!n:~1!%%~xj"
  9.     )
  10.     endlocal
  11.     popd
  12. )
  13. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
hxc1995 + 1 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2024-9-28 10:22:08 | 显示全部楼层
本帖最后由 aloha20200628 于 2024-9-28 10:47 编辑

回复 5# hxc1995

2楼代码第二行
     'dir /b/a-d *.jpg,*.png,*.bmp,*.jpeg,*.gif'
改为》
     'dir /b/s/a-d *.jpg,*.png,*.bmp,*.jpeg,*.gif'
即可包括各级子目录...
发表于 2024-9-28 10:40:35 | 显示全部楼层
回复 1# hxc1995
代码稍作修改,屏蔽了“找不到文件”的报错显示
发表于 2024-9-28 13:22:53 | 显示全部楼层
1楼的代码,判断了目录内是否已经存在 如 0002.jpg,假如存在 会把前一个文件如0001.jpg改名了0003.jpg,然后遍历到0002.jpg仍对其进行了改名,可能是0004.jpg。还有同序号不同扩展名情况。
以下代码,对上述情况进行修改,适合对编号后新加入文件按序号从小到大查漏补缺进行编号,确保新编号文件在多个子目录内编号唯一。楼主根据实际需要自行选用。
  1. @echo off
  2. cd /d "%~dp0"
  3. set "list=*.jpg *.png *.bmp *.jpeg *.gif"
  4. setlocal enabledelayedexpansion
  5. (for /l %%l in (10001,1,19999) do (
  6.         set n=%%l
  7.         echo !n:~-4!
  8. )) > $1
  9. endlocal
  10. (for /r /d %%d in (*) do (
  11.         pushd "%%d"
  12.         for /f "delims=" %%i in ('dir /b /a-d %list% ^|findstr /rixc:"[0-9][0-9][0-9][0-9]\.[a-z]*"') do (
  13.                 echo %%~ni
  14.         )
  15.         popd
  16. )) > $2
  17. findstr /vg:$2 $1 > $3
  18. (for /r /d %%d in (*) do (
  19.         pushd "%%d"
  20.         for /f "delims=" %%i in ('dir /b /a-d %list% ^|findstr /rivxc:"[0-9][0-9][0-9][0-9]\.[a-z]*"') do (
  21.                 set /p str=
  22.                 set file=%%i
  23.                 setlocal enabledelayedexpansion
  24.                 ren "!file!" "!str!%%~xi"
  25.                 endlocal
  26.         )
  27.         popd
  28. )) < $3
  29. del $?
  30. pause
复制代码
发表于 2024-9-29 09:14:44 | 显示全部楼层
本帖最后由 qixiaobin0715 于 2024-9-29 09:17 编辑

6楼代码未考虑重名问题,这样简单一些:
  1. @echo off
  2. set n=10000
  3. for /f "delims=" %%i in ('dir /b /ad') do (
  4.     pushd "%%i"
  5.     setlocal enabledelayedexpansion
  6.     for /f "delims=" %%j in ('dir /b /a-d *.jpg,*.png,*.bmp,*.jpeg,*.gif 2^>nul') do (
  7.         set /a n+=1
  8.         ren "%%j" "!n:~1!%%~xj1"
  9.     )
  10.     for %%j in (jpg,png,bmp,jpeg,gif) do (if exist *.%%j1 ren *.%%j1 *.%%j)
  11.     endlocal
  12.     popd
  13. )
  14. pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 19:43 , Processed in 0.023490 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表