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

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

本帖最后由 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)有些字符被替换为空格。

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

评分人数

    • lijinan: 解决了.的替换,不错。技术 + 1
这么好的论坛你上哪找,运行测试环境为6.1.7601-64
注:请遵守互联网信息安全,勿用于非法用途

TOP

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

评分人数

TOP

返回列表