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

这种for遍历文件的方式配合ren重命名需注意坑

TOP

本帖最后由 pcl_test 于 2017-4-25 17:43 编辑
  1. @echo off&setlocal enabledelayedexpansion
  2. set "str1=GRANBLUE FANTASY"
  3. set "str2=[??]"
  4. set "str1_1=%str1%"
  5. set "str2_1=%str2%"
  6. for %%a in (.,$,^^^^,[,]) do (
  7.     set "str1_1=!str1_1:%%a=\%%a!"
  8.     set "str2_1=!str2_1:%%a=\%%a!"
  9. )
  10. set "str2_1=%str2_1:?=[0-9]%"
  11. set "t=%str2%fedcba987654321"&set /a n=0x!t:~15,1!
  12. for /l %%a in (0 1 %n%) do (
  13.     if "!str2:~%%a,1!" equ "?" set _#%%a=%%a
  14. )
  15. for /f "delims=" %%a in ('dir /a-d/b *.mkv *.ass^|findstr /irc:".*%str1_1%.*%str2_1%"') do (
  16.     call :rn "%%a"
  17. )
  18. pause&exit
  19. :rn
  20. set "fn=%~n1"
  21. set "fn=!fn:%str1%=!"
  22. set m=0
  23. :loop
  24. set "s="
  25. set "tmp=!fn:~%m%,%n%!"
  26. for /f "tokens=2 delims==" %%b in ('set _#') do set "s=!s!!tmp:~%%b,1!"
  27. for /f "tokens=1* delims=9876543210" %%c in ("#!s!") do (
  28.     if "%%c%%d" equ "#" (
  29.         for /l %%e in (0 1 9) do set "tmp=!tmp:%%e=!"
  30.         if "!tmp!" equ "%str2:?=%" (
  31.             echo;ren "%~1" "%str1%_!s!%~x1"
  32.             goto :eof
  33.         )
  34.     )
  35. )
  36. set /a m+=1
  37. if "!tmp!" neq "" goto loop
复制代码
1

评分人数

    • xinjinjie: 完全符合设想的功能和效果,再次感谢版主大 ...技术 + 1

TOP

返回列表