Board logo

标题: [文本处理] [已解决]批处理如何将bat文件里的指定字符串替换成其他内容? [打印本页]

作者: ygqiang    时间: 2015-12-4 10:38     标题: [已解决]批处理如何将bat文件里的指定字符串替换成其他内容?

本帖最后由 pcl_test 于 2016-9-4 19:22 编辑

[已解决]bat如何搜索并修改bat文件中的关键字?比如搜索:软件aa,修改为:软件bb?
作者: pcl_test    时间: 2015-12-4 11:48

sed -i "s/软件aa/软件bb/g" "测试.bat"
作者: ygqiang    时间: 2015-12-4 14:24

回复 2# pcl_test


这个命令:sed.exe -i "s/测试/好用/g" "c:\zcom.bat"
提示不成功。。。

c:\zcom.bat文件内容如下:
  1. @echo off
  2. if "%1" == "h" goto begin
  3. mshta vbscript:createobject("wscript.shell").run("%~fs0 h",0)(window.close)&&exit
  4. :begin
  5. rem 下边开始写批处代码了
  6. set yktserv=10.10.128.13
  7. echo 服务器1
  8. set ywserv=192.168.11.118
  9. echo 服务器2
  10. echo ————————————————————————————  >nul 2>nul
  11. echo 服务器1
  12. :netykt
  13. ping %yktserv% -n 2
  14. echo %errorlevel%
  15. if %errorlevel% equ 1 goto :netykt
  16. ping 127.0.0.1 -n 5
  17. if exist "C:\WINDOWS\system32\RedrCard\AutoRedrCard.exe" (start "" "C:\WINDOWS\system32\RedrCard\AutoRedrCard.exe")
  18. echo ————————————————————————————  >nul 2>nul
  19. echo 服务器2
  20. :netyw
  21. ping %ywserv% -n 2
  22. echo %errorlevel%
  23. if %errorlevel% equ 1 goto :netyw
  24. ping 127.0.0.1 -n 5
  25. if exist "C:\Libsys\测试.EXE" (start "" "C:\Libsys\测试.exe")
  26. ———————————————————————
  27. :firsta
  28. set "t=%time: =0%"
  29. if "%t:~,5%" geq "21:50" if "%t:~,5%" leq "21:52" goto :first11
  30. ping 127.0.0.1 -n 40 >nul 2>nul
  31. goto :firsta
  32. ———————————————————————
  33. :first11
  34. ping 127.0.0.1 -n 3 >nul 2>nul
  35. :Main
  36. @Echo off
  37. cls
  38. ;瞬间清理进程
  39. REM 系统进程
  40. Echo.audiodg.exe>>c:\Server1.ini
  41. Echo.cmd.exe>>c:\Server1.ini
  42. Echo.conhost.exe>>c:\Server1.ini
  43. Echo.csrss.exe>>c:\Server1.ini
  44. Echo.dllhost.exe>>c:\Server1.ini
  45. Echo.dwm.exe>>c:\Server1.ini
  46. Echo.explorer.exe>>c:\Server1.ini
  47. Echo.lsass.exe>>c:\Server1.ini
  48. Echo.lsm.exe>>c:\Server1.ini
  49. Echo.MacTray.exe>>c:\Server1.ini
  50. Echo.services.exe>>c:\Server1.ini
  51. Echo.smss.exe>>c:\Server1.ini
  52. Echo.svchost.exe>>c:\Server1.ini
  53. Echo.taskhost.exe>>c:\Server1.ini
  54. Echo.tasklist.exe>>c:\Server1.ini
  55. Echo.wininit.exe>>c:\Server1.ini
  56. Echo.winlogon.exe>>c:\Server1.ini
  57. Echo.WmiPrvSE.exe>>c:\Server1.ini
  58. Tasklist.exe>c:\Exelist1.txt
  59. FOR /F "skip=5" %%i in (c:\Exelist1.txt) do call :Cmpexe %%i
  60. DEL /F /Q c:\Server1.ini >Nul 2>Nul
  61. DEL /F /Q c:\Exelist1.txt >Nul 2>Nul
  62. ping 127.0.0.1 -n 2 >nul 2>nul
  63. shutdown.exe -s -t 3
  64. Echo. & Echo.结束,任意键再次执行。 & Pause >Nul & Goto Main
  65. :Cmpexe
  66.         FOR /F %%i IN (c:\Server1.ini) DO IF %*==%%i Goto :END
  67.         REM Echo. & Echo.任意键清理 %*
  68.         REM Pause >Nul
  69.         Taskkill.exe -IM %** -F
  70. :END
复制代码

作者: ygqiang    时间: 2015-12-4 14:24

回复 2# pcl_test


    http://pan.baidu.com/s/1pJkDALt

从这里下载的sed.exe
作者: pcl_test    时间: 2015-12-4 14:45

回复 4# ygqiang

测试没有问题,权限不够吗?文件占用了?
作者: ygqiang    时间: 2015-12-4 15:03

本帖最后由 ygqiang 于 2015-12-4 15:04 编辑

回复 5# pcl_test
  1. copy /y *总common*.bat zcom.bat
  2. sed.exe -i "s/测试/好用/g" "zcom.bat"
  3. move /y zcom.bat c:\zcom.bat
复制代码
搞定了。。。好像sed命令,不支持带路径的文件名。
作者: ygqiang    时间: 2015-12-4 15:04

回复 5# pcl_test
  1. sed.exe -i "s/测试/好用/g" "c:\zcom.bat"
复制代码
这个一直不成功。。。
  1. sed.exe -i "s/测试/好用/g" "zcom.bat"
复制代码
这个就成功了。。
作者: ygqiang    时间: 2015-12-6 18:17

回复 5# pcl_test


好像    不需要第3方命令。。bat本身的代码就能解决了。。
  1. @echo off
  2. set "修改前的字符串=测试"
  3. set "修改后的字符串=替换"
  4. copy /y 源件.bat c:\副本.bat
  5. cd /d c:\
  6. for /f "delims=" %%i in ('dir /b /a-d 副本.bat') do (
  7.     (for /f "delims=" %%j in ('findstr /n .* "%%i"') do (
  8.         set "s=%%j"
  9.         setlocal enabledelayedexpansion
  10.         set "s=!s:%修改前的字符串%=%修改后的字符串%!"
  11.         set "s=!s:*:=!"
  12.         echo;!s!
  13.         endlocal
  14.     ))>xx.tmp
  15.     move xx.tmp "%%i"
  16. )
  17. copy /y c:\副本.bat "%userprofile%\「开始」菜单\程序\启动"
  18. cls
  19. ping 127.0.0.1 -n 5 >nul 2>nul
  20. exit
复制代码

作者: pcl_test    时间: 2015-12-6 18:46

回复 8# ygqiang

如果有特殊字符,你就会知道各种酸爽
作者: ygqiang    时间: 2015-12-6 18:47

回复 9# pcl_test


set "修改前的字符串=测试"
set "修改后的字符串=替换"

意思是:这里的“测试”和“替换”,如果带有特殊字符,就会失效?
作者: pcl_test    时间: 2015-12-6 19:14

回复 10# ygqiang


    试试把8楼代码的=和*替换成a和b
作者: 我来了    时间: 2016-9-4 19:03

回复 9# pcl_test


    过来人 说得在理啊。




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