[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖
正则处理由sed来完成,故运行时请确保系统内有sed命令。
  1. @if (0)==(0) echo off
  2. setlocal enabledelayedexpansion
  3. pushd %~dp0
  4. REM 取得名称列表
  5. set "strDict="
  6. set "nCount=0"
  7. set /p "strFile=请拖入处理文本:"
  8. set "strFile=!strFile:"=!"
  9. set "strFilter1=name=.[^^\"]*."
  10. set "strFilter2=.*name=\"\([^^\"]*\)\".*$"
  11. for /f "tokens=*" %%i in ('sed -n "/!strFilter1!/{s/!strFilter2!/\1/;p}" "!strFile!"') do (
  12. set "strTmpName=%%i"
  13. echo,!strDict! | findstr /i "!strTmpName!" >nul 2>nul && (
  14. REM 有字典存在,跳过
  15. ) || (
  16. REM 无字典,添加记录
  17. set /a "nCount+=1"
  18. set "strDict=!strDict!(!strTmpName!)"
  19. )
  20. )
  21. echo,总共存在变量 !nCount! 个
  22. set "nChar=64"
  23. set "strRegExp="
  24. for /l %%i in (1 1 !nCount!) do (
  25. set /a "nChar+=1"
  26. for /f "tokens=*" %%j in ('cscript -nologo -e:jscript %~s0 GetCharFromCode !nChar!') do set "strChar=%%j"
  27. call :_GetParm %%i
  28. )
  29. echo,替换变量正则表达式为 :
  30. echo,!strRegExp!
  31. echo,&echo,
  32. REM 进行关键内容替换
  33. for /f "tokens=*" %%i in ('echo,!strFile!') do set "strNewFile=%%~dpni_rep%%~xi"
  34. >"!strNewFile!" sed "!strRegExp!" "!strFile!"
  35. type "!strNewFile!"
  36. pause
  37. goto :EOF
  38. :_GetParm
  39. (
  40. for /f "tokens=%~1 delims=()" %%a in ('echo,!strDict!') do (
  41. echo,第 %%i 个变量 : %%a ==^> !strChar!
  42. set "strRegExp=!strRegExp!s/%%a/!strChar!/g;"
  43. )
  44. goto :EOF
  45. )
  46. @end
  47. var fun = WScript.Arguments(0);
  48. switch (fun) {
  49. case "GetCharFromCode":
  50. var nChar = parseInt(WScript.Arguments(1));
  51. GetCharFromCode(nChar);
  52. break;
  53. default:;
  54. }
  55. function GetCharFromCode(nChar) {
  56. WScript.Echo(String.fromCharCode(nChar));
  57. }
复制代码
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 8# smss


    就是单个sed.exe程序,论坛也能搜得到。很好下载的。玩批处理的或多或少都要用到正则表达式,各种语言中也有支持的,不过支持的程度不一样,sed是对正则支持比较全面的一个工具了。
下载下来后直接放到批处理同级目录即可调用,或者将其拷到系统PATH路径下(比如c:\windows),则任意目录下都可以调用它。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 11# smss


    嗯,无所谓,不同的实现方式,WHY兄用powershell,本身对各种对象支持就要好些,写出的代码也更简捷,而且代码中正则表达式过滤条件也要好些,没毛病。
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 14# 523066680


    python?
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

回复 56# netbenton


    代码风格看着舒服…
echo,hP1X500P[PZBBBfh#b##fXf-V@`$fPf]f3/f1/5++u5x>in.com

TOP

返回列表