查找文件,在文件中找到一行并更改该行

时间:2019-05-14 17:20:42

标签: powershell

我需要在服务器上查找包含特定文本行的文件,然后需要用新文本替换该文本行。

浏览互联网并尝试了几种方法来写入文件。

$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

我怀疑这与文件路径中的“ \”有关,但我无法弄清楚它们的行为是否正确。

1 个答案:

答案 0 :(得分:1)

别逃避第二个争论。

 -replace [regex]::Escape($searchString), $newString