批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程
[批处理文件精品]批处理版照片整理器[批处理文件精品]纯批处理备份&还原驱动在线第三方下载
返回列表 发帖
本帖最后由 taofan712 于 2017-5-28 23:30 编辑
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /ad') do (
  4.     set "fn=%%~a"
  5.     set "fnw=!fn!"
  6.     for /f "tokens=1-5 delims=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.- " %%1 in ("%%~a") do (
  7.         if not "%%1%%2%%3%%4%%5"=="%%~a" (
  8.             call :change %%1 %%2 %%3 %%4 %%5
  9.         ) else (
  10.             ren "!fn!" chunhanzi 2>nul || ren "!fn!" chunhanzi_1
  11.         )
  12.     )
  13. )
  14. echo;处理完毕&pause>nul&exit /b
  15. :change
  16. for %%b in (%1 %2 %3 %4 %5) do set "fnw=!fnw:%%b=!"
  17. set "fnw=!fnw: =!"
  18. ren "!fn!" "!fnw!" 2>nul ||ren "!fn!" "!fnw!_1"
  19. goto :eof
复制代码
原以为不会太难,没想到在写的时候发现特殊情况会有很多,所以代码不是很完美。见谅。
2

评分人数

TOP

本帖最后由 taofan712 于 2017-5-28 23:19 编辑

回复 3# 老刘1号
文件名设想成这种情况:

汉123字
汉字a2
汉2字汉  3字3
—  aa汉#字
汉字
123字
a  2字

TOP

本帖最后由 taofan712 于 2017-5-28 23:33 编辑

回复 7# 172043209


    在第六行,abcd那里,找个位置加上小数点就行。


但在以下情况会出现其他问题:
文件名本身就不含有汉字的文件夹数量在2个以上。
除汉字以外剩余的字母数字部分相同的文件夹数量在2个以上。
其他

TOP

回复 11# 172043209


    第三行,dir /b /ad改为dir /b /ad /s

TOP

回复 16# 172043209
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "delims=" %%a in ('dir /b /ad /s') do (
  4.     set "fn=%%~nxa"
  5.     set "fnw=%%~nxa"
  6.     for /f "tokens=1-5 delims=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ.- " %%1 in ("%%~nxa") do (
  7.         if not "%%1%%2%%3%%4%%5"=="%%~a" (
  8.             call :change %%1 %%2 %%3 %%4 %%5
  9.         ) else (
  10.             ren "!fn!" chunhanzi 2>nul || ren "!fn!" chunhanzi_1
  11.         )
  12.     )
  13. )
  14. echo;处理完毕&pause>nul&exit /b
  15. :change
  16. for %%b in (%1 %2 %3 %4 %5) do set "fnw=!fnw:%%b=!"
  17. set "fnw=!fnw: =!"
  18. ren "!fn!" "!fnw!" 2>nul ||ren "!fn!" "!fnw!_1"
  19. goto :eof
复制代码

TOP

  1. @echo off
  2. setlocal enabledelayedexpansion
  3. echo;请将需要处理的文件夹拖放进本窗口
  4. set /p folder=
  5. for /f "delims=" %%i in ('dir /ad /s /b %folder%') do set/a n+=1&&set .!n!=%%~fi
  6. (for /l %%n in (!n!,-1,1) do if defined .%%n echo;!.%%n!)>tmp.x
  7. for /f "delims=" %%a in (tmp.x) do (
  8.     cd /d "%%~fa"\..
  9.     set "fn=%%~nxa"
  10.     set "fnw=%%~nxa"
  11.     for /f "tokens=1-5 delims=0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ-." %%1 in ("%%~nxa") do (
  12.         if not "%%1%%2%%3%%4%%5"=="%%~nxa" (
  13.             call :change "%%1" "%%2" "%%3" "%%4" "%%5"
  14.         ) else (
  15.             call :chun
  16.         )
  17.     )
  18. )
  19. cd /d "%~dp0"&del /f /q tmp.x
  20. echo;处理完毕&pause>nul&exit /b
  21. :change
  22. for %%b in (%~1 %~2 %~3 %~4 %~5) do set "fnw=!fnw:%%b=!"
  23. set "fnw=!fnw: =!"
  24. set /a m=1
  25. if exist !fnw! (
  26.     :judge
  27.     if exist !fnw!_!m! (  
  28.         set /a m+=1
  29.         goto judge
  30.     )
  31. ren "!fn!" "!fnw!_!m!"
  32. goto :eof
  33. )
  34. ren "!fn!" "!fnw!"
  35. goto :eof
  36. :chun
  37. set /a m=1
  38. if exist chunhanzi (
  39.     :panduan
  40.     if exist chunhanzi_!m! (
  41.         set /a m+=1
  42.         goto panduan
  43.     )
  44. ren "!fn!" chunhanzi_!m!
  45. goto :eof
  46. )
  47. ren "!fn!" chunhanzi
  48. goto :eof
复制代码
1

评分人数

    • 172043209: 解决了子文件夹问题技术 + 1

TOP

返回列表