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

[文件操作] 求助批处理替换文件名关键时,按指定序号给文件编号。

链接:https://pan.baidu.com/s/125YveNdyt_SfrB5j4YDRFg?pwd=94b8
提取码:94b8
--来自百度网盘超级会员V10的分享
1原始图片    文件夹    中   有图片   若干

       目标:  ① 先将目录下原有图片文件名中的“_”替换为"-"。
                            改前   同步专题04三国两晋南北朝时期-政权分立[00_00_07][20240122-081357]
                            改后   同步专题04三国两晋南北朝时期-政权分立[00-00-07][20240122-081357]
                      ②在文件名前加上4加上4位数的自然数编号,并在编号与①处理后的文件之间加上“_”
                           在处理②前,需要手动输入一个自然数,用来确认编号的开始数值。
                             比如,输入的开始数值为95,则①例中的例子处理后就是
                             0095_同步专题04三国两晋南北朝时期-政权分立[00-00-07][20240122-081357]



希望操作程序是,把要处理 文件夹 拖到这个BAT文件上,松开后,代码运行,提示开始编号,输入编号,处理文件,显示处理完成,手动关闭完成窗口。

感谢

不建议用“拖”的懒办法,有时容易出现问题:
  1. @echo off
  2. set /p n=Please input initialvalue:
  3. set /a n+=9999
  4. setlocal enabledelayedexpansion
  5. for /f "delims=" %%i in ('dir /b /a-d *.jpg') do (
  6.     set /a n+=1
  7.     set "str=%%i"
  8.     set "str=!str:_=-!"
  9.     ren "%%i" "!n:~1!_!str!"
  10. )
  11. pause
复制代码

TOP

加一个功能,重新排序

TOP

回复 2# qixiaobin0715


    谢谢 如果不拖的话 能不能让BAT支持子目录   有时图片太多  BAT和要处理的文件夹同级 处理时能方便一点

TOP

回复 3# newswan


    怎么理解

TOP

  1. @echo off
  2. set /p n=Please input initialvalue:
  3. set /a n+=9999
  4. setlocal enabledelayedexpansion
  5. cd /d "%1"
  6. for /f "delims=" %%i in ('dir /b/s /a-d *.jpg') do (
  7.     set /a n+=1
  8.     set "str=%%i"
  9.     set "str=!str:_=-!"
  10.     ren "%%i" "!n:~1!_!str!"
  11. )
  12. pause
复制代码

TOP

回复 6# pd1
好像第8行应修改为:
  1. set "str=%%~nxi"
复制代码

TOP

回复 5# qd2024

如果某个数输错了,可以重新来

TOP

本帖最后由 qixiaobin0715 于 2024-1-22 16:14 编辑

newswan说的应当是代码前面加上几行这个:
  1. @echo off
  2. :a
  3. set /p n=Please input initialvalue:
  4. set /a m=n
  5. if %m% neq %n% (
  6. echo,Input error.
  7. goto a:
  8. )
  9. set /a n+=9999
复制代码
如果输入的不是数字,就会提醒输入错误,提示输入初值。

TOP

如何让代码支持子目录啊 谢谢

TOP

回复 9# qixiaobin0715

嗯,我以前有个常用的,需要手动输入,偶尔会出错

TOP

  1. @echo off
  2. set /p m=输入编号:
  3. set /a m-=1
  4. for %%a in (%*) do (
  5. pushd "%%~a"
  6. for /f "delims=" %%i in ('dir /b /s /a-d *.jpg') do (
  7. set f=%%i
  8. set n=%%~nxi
  9. set /a m+=10001
  10. setlocal enabledelayedexpansion
  11. ren "!f!" "!m:~-4!_!n:_=-!"
  12. endlocal
  13. )
  14. popd
  15. )
  16. pause
复制代码
bat小白,请多指教!谢谢!

TOP

回复 7# qixiaobin0715


    是的。

TOP

返回列表