Board logo

标题: [文件操作] 求助批处理替换文件名关键时,按指定序号给文件编号。 [打印本页]

作者: qd2024    时间: 2024-1-22 10:09     标题: 求助批处理替换文件名关键时,按指定序号给文件编号。

链接: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文件上,松开后,代码运行,提示开始编号,输入编号,处理文件,显示处理完成,手动关闭完成窗口。

感谢
作者: qixiaobin0715    时间: 2024-1-22 11:17

不建议用“拖”的懒办法,有时容易出现问题:
  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
复制代码

作者: newswan    时间: 2024-1-22 13:02

加一个功能,重新排序
作者: qd2024    时间: 2024-1-22 13:52

回复 2# qixiaobin0715


    谢谢 如果不拖的话 能不能让BAT支持子目录   有时图片太多  BAT和要处理的文件夹同级 处理时能方便一点
作者: qd2024    时间: 2024-1-22 13:53

回复 3# newswan


    怎么理解
作者: pd1    时间: 2024-1-22 14:17

  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
复制代码

作者: qixiaobin0715    时间: 2024-1-22 14:38

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

作者: newswan    时间: 2024-1-22 14:39

回复 5# qd2024

如果某个数输错了,可以重新来
作者: qixiaobin0715    时间: 2024-1-22 15:14

本帖最后由 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
复制代码
如果输入的不是数字,就会提醒输入错误,提示输入初值。
作者: qd2024    时间: 2024-1-22 18:34

如何让代码支持子目录啊 谢谢
作者: newswan    时间: 2024-1-22 18:56

回复 9# qixiaobin0715

嗯,我以前有个常用的,需要手动输入,偶尔会出错
作者: 77七    时间: 2024-1-22 21:40

  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
复制代码

作者: pd1    时间: 2024-1-23 18:07

回复 7# qixiaobin0715


    是的。




欢迎光临 批处理之家 (http://www.bathome.net/) Powered by Discuz! 7.2