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

[其他] 求助完善“删除或者替换当前目录下所有文件夹名称中的指定字符串”批处理代码

[复制链接]
发表于 2016-4-8 14:02:43 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-4-8 21:32 编辑
  1. set find_string=
  2. set /p find_string=输入要查找的字符串:
  3. if not defined find_string echo 未输入需要查找的字符串! & goto loop1
  4. set replace_string=
  5. set /p replace_string=输入替换后的字符串:
  6. for /f "delims="  %%a in ('dir /b /a-d /ad') do (
  7.         set "str=%%~na"
  8.         setlocal enabledelayedexpansion
  9.         for %%i in ( "!str:%find_string%=%replace_string%!") do (
  10.         endlocal
  11.         rename "%%a" "%%~i%%~xa"
  12.                                                                 )
  13.                                                 )
复制代码
上述代码在当前文件夹目录名称中存在.或者!时无法正常进行,求完善,多谢。
发表于 2016-4-8 14:46:07 | 显示全部楼层
本帖最后由 happy886rr 于 2016-4-9 00:02 编辑
  1. 未输入需要查找的字符串!
  2. @echo off&cls
  3. set/p st1=查找的字:
  4. if not defined st1 (sort %0|more +12&goto loop1)
  5. set/p st2=替换的字:
  6. if not defined st2 (sort %0|more +12&goto loop1)
  7. for /f "delims=" %%a in ('dir /ad /b /s^|sort /r') do (
  8.         set "str=%%~na"
  9.         call,set "str=%%str:%st1%=%st2%%%"
  10.         call,rename "%%a" "%%str%%%%~xa"
  11. )
  12. :loop1
  13. set/p=这里是 loop1^_^&&set/p=
复制代码
回复 1# lijinan
发表于 2016-4-8 21:02:23 | 显示全部楼层
本帖最后由 pcl_test 于 2016-4-8 23:07 编辑
  1. //&cls&dir /ad /b /s|sort /r|cscript -nologo -e:jscript "%~f0" "查找的字符串" "替换后的字符串"&pause&exit

  2. //如果未指定“替换后的字符串”,则为删除/去除“查找的字符串”
  3. var fso = new ActiveXObject('Scripting.FileSystemObject');

  4. try{
  5.     var astr = WScript.Arguments(0), bstr = WScript.Arguments(1);
  6. }
  7. catch(e){
  8.     try{
  9.         var astr = WScript.Arguments(0), bstr = '';
  10.     }catch(e){}
  11. }

  12. while(!WScript.StdIn.AtEndOfStream){
  13.     var fd = fso.GetFolder(WScript.StdIn.ReadLine());
  14.     var fn = fd.Name;
  15.     try{
  16.         while(fn.indexOf(astr)>-1){
  17.             var fn = fn.replace(astr, bstr);
  18.         }
  19.     fd.Name = fn;
  20.     }catch(e){}
  21. }
复制代码
发表于 2016-4-8 23:33:11 | 显示全部楼层
  1. @if (0)==(0) echo off
  2. set "替换前=ABC"
  3. set "替换后=123"
  4. for /f "tokens=1*delims=/" %%i in ('dir /b /ad /s^|sort /r^|cscript //nologo //e:jscript "%~0" "%替换前%" "%替换后%"')do (
  5.     ren "%%j" "%%i"
  6. )2>nul
  7. pause & exit
  8. @end

  9. var arg = WSH.Arguments;
  10. var reg = new RegExp(arg(0).replace(/[\^$(){}\[\]+\-.]/g, '\\$&'), 'ig');
  11. var str = WSH.StdIn.ReadAll().replace(
  12.     /.+\\(.+)\r\n/g,
  13.     function(s0, s1){
  14.         if (reg.test(s1)) return s1.replace(reg, arg(1)) + '/' + s0;
  15.     }
  16. )
  17. WSH.Echo(str)
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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