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

[文本处理] 求助文件重命名换顺序的批处理

一堆图片命名格式A-B-C-D  怎么能实现变成A-C-B-D啊;
log_0588_2514_1_004.jpg变成 log_2514_0588_1_004.jpg 俩横线中间的数字位数不一样

回复 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%%"
复制代码
1

评分人数

    • haichuan5121: 谢谢 ,真得好好学习了,可以实现,请教下分 ...技术 + 1

TOP

回复 16# went


1bslhd125aAB_2514_0588_1_004.jpg 不成功1bslhd125aAB_2514_0588_1_004-副本.jpg成功转成1bslhd125aCF_2514_0588_1_004-副本.jpg   
顺道改成放文件夹点击不需要改绝对地址那种

TOP

回复 15# haichuan5121


不成功图片完整的文件名能发出来下吗,

TOP

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

回复 12# went


    文件夹下原文件实验不成功,但是复制成副本就全部成功了,A_B_C_D.JPG 不成功,A_B_C_D-副本.jpg就OK呢,是分隔符不适用么

TOP

回复 13# went


别用这种,发现有bug
t00001.txt会替换成chd001.txt
类似占位符替换,不过这种应该有其它用处

TOP

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

评分人数

    • netdzb: 真实有效,谢谢。技术 + 1
    • wujunkai: 几乎要忘记这种方法了技术 + 1

TOP

本帖最后由 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
复制代码
1

评分人数

TOP

回复 9# went

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

TOP

回复 9# went


    只huan A 就行

TOP

回复 4# haichuan5121


    批量替换是只换A还是A-B-C-D都换

TOP

能帮我这个看看怎么改吗
回复 7# wujunkai

TOP

回复 6# haichuan5121


    哦这个是给3楼的。。。

TOP

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

回复 5# wujunkai


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

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

TOP

回复 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:会波及到文件扩展名。。。
我先考试,考完再修

TOP

返回列表