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

[文件操作] 批处理怎么按序号来重命名文件?

怎么按序号来重命名文件?

直接说想要的结果吧:

如果有已经命名好的文件了,我想再往里面加文件,但是又要按以前的序号重命名加进去的新文件,也就是说先判断里面的文件序号到哪了,然后再按序号生成新的文件名........

图片1.jpg
图片2.jpg
图片3.jpg
图片4.jpg
图片5.jpg
图片6.jpg

加入一张新图片:新图片.jpg

结果:

图片1.jpg
图片2.jpg
图片3.jpg
图片4.jpg
图片5.jpg
图片6.jpg
图片7.jpg

想要的批处理是只改“新图片.jpg”的名字为“图片7.jpg”而不用再全部重命名一遍......

  1. @echo off
  2. set n=1
  3. for /f "delims=" %%i in ('dir /a-d %cd%\*.jpg') do set /a n+=1
  4. ren %cd%\新图片.jpg 图片%n%.jpg
  5. pause
复制代码

TOP

以数字命名需考虑很多问题
如:你有 图片1 至 图片7 七个文件,但因某种原因删除了图片5,那么如果下次又有两个新文件,则需分别命名为图片5和图片8
还有就是如何区分哪些文件是需要重命名的,如上,你有7个文件,但新文件的文件名如果是 图片235.jpg 该怎么区分?按你的要求应该是命名为 图片8 才对吧。
以下代码只对文件名不是 “图片+数字.jpg”的文件名进行重命名,
:
  1. @echo off
  2. for /f "delims=" %%a in ('dir/b *.jpg^|findstr /bv "图片[0-9]"') do (
  3.    call :loop "%%a"
  4. )
  5. pause&exit
  6. :loop
  7. set /a n+=1
  8. if exist "图片%n%.jpg" goto loop
  9. ren "%~1" "图片%n%.jpg"
  10. goto :EOF
复制代码
技术问题请到论坛发帖求助!

TOP

这个有点复杂,原来想弄个接着原来的数字序号命名的,没搞好关系
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表