Board logo

标题: [文本处理] 求助,如何用批处理替换文本中内容 [打印本页]

作者: yg8547    时间: 2023-10-11 22:57     标题: 求助,如何用批处理替换文本中内容

本帖最后由 yg8547 于 2023-10-11 23:02 编辑

假设有一个文件在C盘根目录下文件名为
  1. ConductorS.INI
复制代码
,文件部分内容如下;需将里面内容
  1. D:\Conductor90\  
复制代码
替换为
  1. C:\Conductor666\
复制代码
,如何用批处理来替换呢?
  1. [Text Setting]
  2. TextPath=D:\Conductor90\S_Data\Report
  3. [HTML Setting]
  4. HTMLPath=D:\Conductor90\S_Data\Report\Html
  5. ;没有IIS
  6. URLPath=file://D:\Conductor90\S_Data\Report\Html
  7. ;有IIS
  8. ;URLPath= http://127.0.0.1/Html
  9. [Batch Setting]
  10. BatchPath=D:\Conductor90\S_Data\Batch_Log
  11. ;未装 IIS
  12. URLPath=file://D:\Conductor90\S_Data\Batch_Log
  13. ;己装 IIS
  14. ;URLPath= http://127.0.0.1/Batch_Log
  15. C:\Conductor666\
  16. [Trans Setting]
  17. TransPath=D:\Conductor90\S_Data\Trans_Log
  18. ;未装 IIS
  19. URLPath=file://D:\Conductor90\S_Data\Trans_Log
  20. ;己装 IIS
  21. ;URLPath= http://127.0.0.1/Trans_Log
复制代码
最终结果如下所示
  1. [Text Setting]
  2. TextPath=C:\Conductor666\S_Data\Report
  3. [HTML Setting]
  4. HTMLPath=C:\Conductor666\S_Data\Report\Html
  5. ;没有IIS
  6. URLPath=file://C:\Conductor666\S_Data\Report\Html
  7. ;有IIS
  8. ;URLPath= http://127.0.0.1/Html
  9. [Batch Setting]
  10. BatchPath=C:\Conductor666\S_Data\Batch_Log
  11. ;未装 IIS
  12. URLPath=file://C:\Conductor666\S_Data\Batch_Log
  13. ;己装 IIS
  14. ;URLPath= http://127.0.0.1/Batch_Log
  15. C:\Conductor666\
  16. [Trans Setting]
  17. TransPath=C:\Conductor666\S_Data\Trans_Log
  18. ;未装 IIS
  19. URLPath=file://C:\Conductor666\S_Data\Trans_Log
  20. ;己装 IIS
  21. ;URLPath= http://127.0.0.1/Trans_Log
复制代码

作者: Nsqs    时间: 2023-10-11 23:47

  1. #PowerShell
  2. (gc '你的文件').Replace('D:\Conductor90\','C:\Conductor666\')
复制代码

作者: 77七    时间: 2023-10-12 01:09

  1. @fltmc>nul||mshta vbscript:CreateObject("Shell.Application").ShellExecute("%~dpnx0","%*",,"runas",1)(window.close)&&exit
  2. @echo off
  3. cd /d "%~dp0"
  4. (for /f "useback delims=" %%a in (`find /n /v "" ^<"c:\ConductorS.INI"`) do (
  5. set str=%%a
  6. setlocal enabledelayedexpansion
  7. set "str=!str:D:\Conductor90=C:\Conductor666!"
  8. echo=!str:*]=!
  9. endlocal
  10. ))>$
  11. copy $ "c:\ConductorS.INI"
  12. del $
  13. pause
复制代码

作者: yg8547    时间: 2023-10-12 11:24

感谢,我尝试另一种方法来解决了(由于 客户端有的是 win7  powershell用不了),以下是我的解决方案  (思路大概就是在文件中将路径替换为环境变量,然后通过脚本添加环境变量,将安装路径从注册表中提取出来作为环境变量添加),再次感谢各位!!!
  1. @echo off
  2. MODE con: COLS=20 LINES=20
  3. rem 自动提权以管理员方式运行
  4. >nul 2>&1 "%SYSTEMROOT%\system32\cacls.exe" "%SYSTEMROOT%\system32\config\system"
  5. if '%errorlevel%' EQU '5' (
  6. goto UACPrompt
  7. ) else ( goto gotAdmin )
  8. :UACPrompt
  9. echo Set UAC = CreateObject^("Shell.Application"^) > "%temp%\getadmin.vbs"
  10. echo UAC.ShellExecute "%~s0", "", "", "runas", 1 >> "%temp%\getadmin.vbs"
  11. "%temp%\getadmin.vbs"
  12. exit /B
  13. :gotAdmin
  14. if exist "%temp%\getadmin.vbs" ( del "%temp%\getadmin.vbs" )
  15. pushd "%CD%"
  16. CD /D "%~dp0"
  17. set reg1=reg query "HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\DSC\Conductor" /v ClientPath
  18. for /f "delims=" %%i in ('%reg1%') do set install_lj=%%i
  19. ::echo %install_lj%
  20. set testc=%install_lj:~28%
  21. echo %testc%
  22. ::%testc%
  23. setx YIFEIERP "%testc%" /M >nul
  24. copy /y "\\172.18.18.123\share\git\ConductorC.INI"  "%testc%"
  25. copy /y "\\172.18.18.123\share\git\ConductorS.INI"  "%testc%"
  26. %testc%\C_Dsbin\MainMenuEx.exe
  27. exit /b
复制代码





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