使用Power Shell在文本文件中查找和替换字符串

时间:2020-09-15 18:49:19

标签: powershell

我有一个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"

它给出一个无效的正则表达式模式错误

1 个答案:

答案 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'