Board logo

标题: [文本处理] 求助文件重命名换顺序的批处理 [打印本页]

作者: haichuan5121    时间: 2020-4-11 21:02     标题: 求助文件重命名换顺序的批处理

一堆图片命名格式A-B-C-D  怎么能实现变成A-C-B-D啊;
log_0588_2514_1_004.jpg变成 log_2514_0588_1_004.jpg 俩横线中间的数字位数不一样
作者: hlzj88    时间: 2020-4-11 21:33

本帖最后由 hlzj88 于 2020-4-12 00:00 编辑
  1. @echo off
  2. for /f "tokens=1-4* delims=_" %%i in ('dir /b/on *.jpg') do echo ren %%i_%%j_%%k_%%l_%%m %%i_%%k_%%j_%%l_%%m
  3. pause
复制代码
测试无误去掉 echo
作者: netdzb    时间: 2020-4-12 14:36

回复 2# hlzj88


搭车问一下t0001,t0002,t0003之类的名字,如何改成chd0001,chd0002,chd0003之类的脚本怎么写?
中间没有分割符号。
作者: haichuan5121    时间: 2020-4-12 18:45

本帖最后由 haichuan5121 于 2020-4-12 18:46 编辑

回复 2# hlzj88


    谢谢;A-B-C-D 转A-C-B-D成功;A里面共6位字母 第5.6两位怎么能批量互换么;单独批处理换5.6位也行
   A=1edfc3  换成1edf3c    A内容随机6位,之前有个编辑的只能换指定字符 ,大神能改个换任意字符的么;不管5.6位是啥,5,6位互换;
  1. @echo off
  2. echo.&echo.
  3. title 批量替换文件名中的部分字符串&color 3f
  4. echo Note:
  5. echo 本批处理可批量替换本文件所在文件夹下的所有文件名的相同字符
  6. echo.&echo.&echo.&echo.&echo.&echo.
  7. echo.&set /p strtemp3= 请输入要替换的文件类型:
  8. echo.&set /p strtemp1= 请输入要替换的字符串(可替换空格):
  9. echo.&set /p strtemp2= 请输入替换后的字符串(删除则直接回车):
  10. setlocal enabledelayedexpansion
  11. for /f "delims=" %%a in ('dir /a /b *.%strtemp3%') do (
  12. set nobird=%%a
  13. ren "%%~a" "!nobird:%strtemp1%=%strtemp2%!")
  14. echo.&echo.&echo.&echo.&echo Done!
  15. pause
复制代码

作者: wujunkai    时间: 2020-4-12 19:11

回复 3# netdzb
  1. @echo off & setlocal enabledelayedexpansion
  2. rem 在这里设置替换的字符串
  3. set "from=doc"
  4. set "to=AAA"
  5. :main
  6.     for /R %%i in (*.*) do (
  7.         set "file=%%~nxi"
  8.         if not "!file!"=="!file:%from%=%to%!" rename "%%~dpi!file!" "%%~dpi!file:%from%=%to%!"
  9.         
  10.     )
  11.     pause
  12. goto:eof
复制代码
已知bug:会波及到文件扩展名。。。
我先考试,考完再修
作者: haichuan5121    时间: 2020-4-12 19:41

本帖最后由 haichuan5121 于 2020-4-12 19:48 编辑

回复 5# wujunkai


    没成功,文件名1BCDLM-B-C-D.JPG  改成1BCDML-B-C-D     其中前六位字母是随机的 所以不能指定更改替换字符;需要按位数替换;

或者大神帮忙写个更高级的方式;批量查找替换   AB换成CF   CD换成JH  VC换成BG  共大约几十个组合,这两位小白可以单独修改后查找替换;
作者: wujunkai    时间: 2020-4-12 19:46

回复 6# haichuan5121


    哦这个是给3楼的。。。
作者: haichuan5121    时间: 2020-4-12 19:50

能帮我这个看看怎么改吗
回复 7# wujunkai
作者: went    时间: 2020-4-12 20:31

回复 4# haichuan5121


    批量替换是只换A还是A-B-C-D都换
作者: haichuan5121    时间: 2020-4-12 20:47

回复 9# went


    只huan A 就行
作者: haichuan5121    时间: 2020-4-12 20:56

回复 9# went

名字没有空格后两位互换
    1ABC DE-----1ABC ED
    1ABC CF------1ABC FC
或者高级需求;约50个组合可自定义指定替换内容
如指定 CF 替换为HG  CV 替换为CA后效果
   1ABC CF----1ABC HG
   1ABC CV---1ABC CA
作者: went    时间: 2020-4-12 20:58

本帖最后由 went 于 2020-4-12 21:04 编辑

批量替换,ANSI保存,先测试再删掉15行的REM
  1. @echo off
  2. REM dir
  3. set "dir=C:\Users\lenovo\Desktop\0"
  4. REM key-value
  5. set "keys=AB:CF CD:JH VC:BG"
  6. for /f "tokens=1* delims=-" %%i in ('dir /b "%dir%\*.jpg"') do (
  7. echo %dir%\%%i-%%j
  8. call set "fileName=%%i"
  9. for %%a in (%keys%) do (
  10. for /f "tokens=1-2 delims=:" %%b in ("%%a") do (
  11. call set "fileName=%%fileName:%%b=%%c%%"
  12. )
  13. )
  14. call echo %%fileName%%-%%j
  15. REM call rename "%dir%\%%i-%%j" "%%fileName%%-%%j" && echo 成功! || echo 失败!
  16. echo ---------------
  17. )
  18. echo 完成!
  19. pause&exit
复制代码

作者: went    时间: 2020-4-12 21:25

回复 3# netdzb
  1. rename t*.txt chd*.txt
复制代码

作者: went    时间: 2020-4-12 21:37

回复 13# went


别用这种,发现有bug
t00001.txt会替换成chd001.txt
类似占位符替换,不过这种应该有其它用处
作者: haichuan5121    时间: 2020-4-12 21:56

本帖最后由 haichuan5121 于 2020-4-12 22:23 编辑

回复 12# went


    文件夹下原文件实验不成功,但是复制成副本就全部成功了,A_B_C_D.JPG 不成功,A_B_C_D-副本.jpg就OK呢,是分隔符不适用么
作者: went    时间: 2020-4-12 22:04

回复 15# haichuan5121


不成功图片完整的文件名能发出来下吗,
作者: haichuan5121    时间: 2020-4-13 00:06

回复 16# went


1bslhd125aAB_2514_0588_1_004.jpg 不成功1bslhd125aAB_2514_0588_1_004-副本.jpg成功转成1bslhd125aCF_2514_0588_1_004-副本.jpg   
顺道改成放文件夹点击不需要改绝对地址那种
作者: went    时间: 2020-4-13 12:11

回复 17# haichuan5121

放到jpg文件夹中运行,重命名当前文件夹中的jpg文件
  1. @echo off
  2. REM key-value
  3. set "keys=AB:CF CD:JH VC:BG"
  4. for /f "delims=" %%i in ('dir /b "*.jpg"') do (
  5. echo %%i
  6. set "file=?%%~i"
  7. REM delims=后面是A与BCD之间的分隔符(-_)支持多个
  8. for /f "tokens=1 delims=-_" %%a in ("%%~i") do (
  9. set "A=%%a"
  10. for %%a in (%keys%) do (
  11. for /f "tokens=1-2 delims=:" %%b in ("%%a") do (
  12. call set "A=%%A:%%b=%%c%%"
  13. )
  14. )
  15. call :replace "?%%a" "%%A%%"
  16. )
  17. call echo %%file%%
  18. REM call rename "%%~i" "%%file%%" && echo 成功! || echo 失败!
  19. echo -----------------------
  20. )
  21. echo 完成!
  22. pause&exit
  23. :replace
  24. call set "file=%%file:%~1=%~2%%"
复制代码





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