Board logo

标题: [文件管理] 批处理批量文件后缀重命名 [打印本页]

作者: fml520    时间: 2008-4-5 21:40     标题: 批处理批量文件后缀重命名

  1. :cd
  2. set "p=:"
  3. set "hzm=:"
  4. set "wjm=:"
  5. set "xz=:"
  6. cls
  7. @echo off
  8. mode con COLS=75 lines=8
  9. setlocal enabledelayedexpansion
  10. title f m r 5 2 0 欢迎使用批量文件 后缀重命名
  11. color e
  12. echo. ╭──────────────╮
  13. echo. │欢迎使用批量文件 后缀重命名 │
  14. echo. ╰──────────────╯
  15. echo.
  16. echo 1.文件重命名 0.退出 2.后缀重命名
  17. echo. ────────────────────────────────────
  18. set /p xz=(1/0/2):
  19. set "xz=%xz:"=%"
  20. if "%xz%"==":" goto cd
  21. if "%xz%"=="1" goto 1_
  22. if "%xz%"=="0" exit
  23. if "%xz%"=="2" goto 2_
  24. exit
  25. :1_
  26. cls
  27. echo ╔══════════╗
  28. set /p p=║要改名的目录放到这里║:
  29. set "p=%p:"=%"
  30. if "%p%"==":" goto 1_
  31. :hzm_
  32. cls
  33. echo.╭───────────────────────╮
  34. echo.│ 输入要更改的文件名后缀,不要加小数点 (. ),│
  35. echo.│───────────────────────│
  36. echo.│ (*) 将会对该目录下的文件全部改名 │
  37. echo.╰───────────────────────╯
  38. echo.╔═══════════════════╗
  39. set /p hzm=║输入要更改的后缀名 (jpg bmp txt exe *)║:
  40. set "hzm=%hzm:"=%"
  41. if "%hzm%"==":" goto hzm_
  42. :wjm_
  43. cls
  44. echo.
  45. echo.╭──────────────────────────╮
  46. echo.│ 如不输入替换的文件名,将会把文件改成按数字顺序命名 │
  47. echo.╰──────────────────────────╯
  48. echo. ────────────────────────────────────
  49. echo.╔═════════╗
  50. set /p wjm=║输入要替换的文件名║:
  51. set "wjm=%wjm:"=%"
  52. cls
  53. echo.
  54. echo 程序正在运行中......
  55. echo.
  56. echo.
  57. for /f "tokens=*" %%a in ('dir/b "%p%\*.%hzm%"') do (call :rib "%%a")>nul 2>nul
  58. for /f "tokens=*" %%i in ('dir/b "%p%\*.%hzm%" ^|findstr/i/v/c:"0123456789"') do (set /a
  59. sum+=1
  60. call title 正在更改第 %%sum%% 个文件 %%i
  61. ping 1.1 /w 300<NUL
  62. call :rrr "%%i")>nul 2>nul
  63. cls
  64. echo.
  65. echo 完成!谢谢使用
  66. pause>nul
  67. exit
  68. :rrr
  69. cd/d"%p%"
  70. ren %1 %wjm%%sum%%~x1
  71. goto :eof
  72. :rib
  73. cd/d"%p%"
  74. attrib -s %1
  75. goto :eof
  76. :2_
  77. set "qwe=:"
  78. set "hzn=:"
  79. set "gg=:"
  80. cls
  81. echo ╔════════════╗
  82. set /p qwe=║要改后缀名的目录放到这里║:
  83. set "qwe=%qwe:"=%"
  84. if "%qwe%"==":" goto 2_
  85. :hzn_
  86. cls
  87. echo.╭────────────────────╮
  88. echo.│ 输入更改的后缀名,不要加小数点 (. ),│
  89. echo.│────────────────────│
  90. echo.│ (*) 将会对该目录下的后缀名全部更改 │
  91. echo.╰────────────────────╯
  92. echo.╔═══════════════════╗
  93. set /p hzn=║输入要更改的后缀名 (jpg bmp txt exe *)║:
  94. set "hzn=%hzn:"=%"
  95. if "%hzn%"==":" goto hzn_
  96. :gg_
  97. cls
  98. echo.
  99. echo.╭──────────────────╮
  100. echo.│ 输入要替换的后缀名,不要加小数点 . │
  101. echo.╰──────────────────╯
  102. echo. ────────────────────────────────────
  103. echo.╔═══════════════════╗
  104. set /p gg=║输入要替换的后缀名 (jpg bmp txt exe)║:
  105. set "gg=%gg:"=%"
  106. if "%gg%"==":" goto gg_
  107. cls
  108. echo.
  109. echo 程序正在运行中......
  110. echo.
  111. echo.
  112. for /f "tokens=*" %%t in ('dir/b "%qwe%\*.%hzn%" ^|findstr/i/v/c:"0123456789"') do (set /a
  113. sxm+=1
  114. call title 正在更改第 %%sxm%% 个文件 %%t
  115. ping 1.1 /w 300<NUL
  116. cd/d"%qwe%\"
  117. call :rzr "%%t")>nul 2>nul
  118. cls
  119. echo.
  120. echo 完成!谢谢使用
  121. pause>nul
  122. :rzr
  123. cd/d"%qwe%\"
  124. ren %1 "%~n1.%gg%"
  125. goto :eof
复制代码

作者: aeiilw    时间: 2009-2-13 18:42

lz,不行啊!不是说批量文件后缀重命名,咋的只能重命名1个???
作者: Batcher    时间: 2009-2-13 23:37     标题: 回复 2楼 的帖子

能否说说你详细的测试过程?
作者: aeiilw    时间: 2009-2-14 10:06

把lz的代码保存为"批量文件后缀重命名.bat"
双击打开
1, 回车
G:\ADFM, 回车
*, 回车
回车
......
完成后,打开一看一个文件也没有重命名
第二次
1, 回车
G:\ADFM, 回车
*, 回车
1, 回车
......
完成后,打开一看,只有一个文件重命名为1
(改后缀我试过了,可以的,但重命名就不行了)
作者: wang321dong    时间: 2009-2-19 15:35

不管怎样 感谢分享了 好东西
作者: cjiabing    时间: 2009-2-21 11:16

好像挺复杂的,学习了
作者: xouou_53320    时间: 2009-3-15 23:57

可以使用 就是太慢了
作者: goodday    时间: 2022-10-6 22:38

楼主,这个可以增加遍历子目录功能吗?




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