[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] 批处理如何实现文件批量命名?

有大量如下命名方式的图片:1.jpg 2.jpg 3.jpg 4.jpg …… 9.jpg 10.jpg ……99.jpg  100.jpg……要把命名改为:001.jpg 002.jpg 003.jpg 004.jpg …… 009.jpg 010.jpg ……099.jpg  100.jpg…如果最大是三位数就在前面补两个0,如果是四位数就补三个0. 如何写代码。

回复 5# kmustwxw
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set max=0
  4. set n=0
  5. for %%i in (*.jpg) do (
  6.     set n=%%~ni
  7.     set n=!n:组合=!
  8.     if !n! gtr !max! (
  9.         set max=!n!
  10.     )
  11. )
  12. set len=0
  13. for /f "skip=1 delims=:" %%i in ('^(echo "%max%"^&echo.^)^|findstr /o ".*"') do (
  14.     set /a len=%%i-5
  15. )
  16. set pre=1
  17. for /l %%i in (1,1,%len%) do (
  18.     set /a pre*=10
  19. )
  20. for /f %%i in ('dir /b *.jpg') do (
  21.     set n=%pre%%%~ni
  22.     set n=!n:组合=!
  23.     ren %%i !n:~-%len%!.jpg
  24. )
复制代码

TOP

不好意思,是组合。谢谢

TOP

回复 3# kmustwxw


    到底是“组合”还是“图片”?

TOP

太感谢你了,这段代码能满足要求,我还想请教一下:就是还有一些:组合1.jpg  组合2.jpg 组合3.jpg ……就是在图片的名字前都有“图片”两个字,要如何改下代码呢?谢谢指教。

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. set max=0
  4. set n=0
  5. for %%i in (*.jpg) do (
  6.     set n=%%~ni
  7.     if !n! gtr !max! (
  8.         set max=!n!
  9.     )
  10. )
  11. set len=0
  12. for /f "skip=1 delims=:" %%i in ('^(echo "%max%"^&echo.^)^|findstr /o ".*"') do (
  13.     set /a len=%%i-5
  14. )
  15. set pre=1
  16. for /l %%i in (1,1,%len%) do (
  17.     set /a pre*=10
  18. )
  19. for /f %%i in ('dir /b *.jpg') do (
  20.     set n=%pre%%%~ni
  21.     ren %%i !n:~-%len%!.jpg
  22. )
复制代码

TOP

返回列表