我有一个bat文件(例如test.bat),其中包含一些变量分配,例如:
set SFT_HOME=C:\Software1
set SFT_ERRO_DIR=C:\Software1\Err
我需要编写一个Powershell脚本,以将test.bat中的这些变量值替换为:
replace 'set SFT_HOME=C:\Software1' with 'set SFT_HOME=C:\Software1\Check'
replace 'set SFT_ERRO_DIR=C:\Software1\Err' with 'set SFT_ERRO_DIR=C:\Software1\Err\Check'
我尝试了以下操作,但没有成功:
(Get-Content -path C:\program\software\test.bat) -replace 'set SFT_HOME=C:\Software1', 'set SFT_HOME=C:\Software1\Check' | Set-Content C:\program\software\test.bat"
它给出一个无效的正则表达式模式错误
答案 0 :(得分:0)
正则表达式中有一些特殊字符需要转义,特别是反斜杠。要转义它们,您可以使用反斜杠-看起来像这样
'set SFT_HOME=C:\Software1' -replace 'set SFT_HOME=C:\\Software1','set SFT_HOME=C:\Software1\Check'
但是,为避免手动转义,您可以简单地使用regex escape()方法。
'set SFT_HOME=C:\Software1' -replace [regex]::escape('set SFT_HOME=C:\Software1'),'set SFT_HOME=C:\Software1\Check'