Board logo

标题: [文本处理] 【已解决】求助完善“批量删除/去除文件名中指定的字符串”的批处理代码 [打印本页]

作者: lijinan    时间: 2016-1-16 22:00     标题: 【已解决】求助完善“批量删除/去除文件名中指定的字符串”的批处理代码

本帖最后由 lijinan 于 2016-4-9 12:44 编辑
  1. :: 本批处理查找当前目录下文件并删除文件名中指定的字符串.
  2. @echo off
  3. color 1f
  4. cd /d "%~dp0"
  5. echo                                              %date:~0,10% %time:~0,8%
  6. :loop1
  7. set suffix=
  8. set /p suffix=输入要查找的后缀名:
  9. if not defined suffix echo 未输入后缀名 & goto loop1
  10. :loop2
  11. set find_string=
  12. set /p find_string=输入要查找的字符串:
  13. if not defined find_string echo 未输入需要查找的字符串! & goto loop2
  14. set replace_string=
  15. for /r .\ %%a in ("*.%suffix%") do (
  16.   set "str=%%~na"
  17.   setlocal enabledelayedexpansion
  18.   set "str=!str:%find_string%=%replace_string%!"
  19.   rename "%%~dpa%%~na.%suffix%" "!str!%%~xa"
  20.   endlocal
  21. )
  22. goto end
  23. :: 结束程序
  24. :end
  25. echo.
  26. echo 任意键退出!
  27. pause >nul 2>nul
  28. exit
复制代码
存在问题:
(1)遇到!退出;
(2)有些字符被替换为空格。
作者: WHY    时间: 2016-1-17 15:44

本帖最后由 WHY 于 2016-1-17 15:47 编辑
  1. for /f "delims="  %%a in ('dir /b /a-d  /s "*.%suffix%"') do (
  2.     set "str=%%~na"
  3.     setlocal enabledelayedexpansion
  4.     for %%i in ( "!str:%find_string%=%replace_string%!") do (
  5.         endlocal
  6.         rename "%%a" "%%~i%%~xa"
  7.     )
  8. )
复制代码

作者: /zhqsystem/zhq    时间: 2016-1-18 01:19

本帖最后由 /zhqsystem/zhq 于 2016-1-18 01:50 编辑

回复 1# lijinan
水一个
  1. @echo off&(color 0e)
  2. if not defined n set "n=0"
  3. set/a "n+=1"
  4. if %n% geq 2 (set "#exe#=ren")else (set "#exe#=echo")
  5. if not defined #suffix# set/p "#suffix#=输入要查找的后缀名:"
  6. if not defined #find_string# set/p "#find_string#=输入要查找并替换的文件名:"
  7. for /f "delims=" %%i in ('dir/a-d/b/l/on ".\*%#find_string#%*.%#suffix#%"')do if /i not "%%~nxi"=="%~nx0" (
  8. set "#name#=%%~ni"
  9. for /f "delims=" %%j in ("%#find_string#%")do (
  10.   call set "#name#=%%#name#:%%j=%%"
  11.   call %%#exe#%% ".\%%~nxi" "%%#name#%%%%~xi"
  12.   if /i "%#exe#%"=="echo"  (call %%#exe#%% ".\%%~nxi" "%%#name#%%%%~xi")>>".\数据验证.txt"
  13. )
  14. )
  15. echo,[仔细效验数据]任意键后重新命名,关闭则退出
  16. pause
  17. call "%~f0"
复制代码





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