找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 27363|回复: 2

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

[复制链接]
发表于 2016-1-16 22:00:28 | 显示全部楼层 |阅读模式
本帖最后由 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)有些字符被替换为空格。
发表于 2016-1-17 15:44:17 | 显示全部楼层
本帖最后由 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技术 +1 收起 理由
lijinan + 1 无。

查看全部评分

发表于 2016-1-18 01:19:54 | 显示全部楼层
本帖最后由 /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技术 +1 收起 理由
lijinan + 1 解决了.的替换,不错。

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 23:12 , Processed in 0.022279 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表