我需要在服务器上查找包含特定文本行的文件,然后需要用新文本替换该文本行。
浏览互联网并尝试了几种方法来写入文件。
$path = "C:\users\
$filename = "myfile.ini"
$searchString="Program=C:\Program Files (x86)\Over\Here"
$newString="Program=C:\Program Files (x86)\Here
Get-ChildItem -Path $Path -Recurse -Filter $filename -ErrorAction SilentlyContinue | foreach-object {
(Get-Content $_.FullName) | ForEach-Object {$_ -replace [regex]::Escape($searchString), [regex]::Escape($newString) } | Set-Content $_.FullName
}
我希望我的文件看起来像这样。
Program=C:\Program Files (x86)\Here
但是我明白了。
Program=C:\\\Program\ Files\ (x86\\)\\\Here
我怀疑这与文件路径中的“ \”有关,但我无法弄清楚它们的行为是否正确。
答案 0 :(得分:1)
别逃避第二个争论。
-replace [regex]::Escape($searchString), $newString