在XML文档中查找和替换字符串

时间:2015-08-19 07:15:12

标签: powershell powershell-v2.0 powershell-v3.0 powershell-v4.0 powershell-ise

我有一个XML文件,想要在XML文档中找到所有“en-us”字符串并替换为不同的文化。我能找到它们但不知道如何更换它们。尝试替换,获取内容和设置内容,但无法正常工作。也许我没有正确使用它。

$testPath = "C:\temp\testing\"
$path = Get-ChildItem $testPath -Recurse
ForEach ($file in $path){
    $file | Select-String -AllMatches "en-us" | % { $_.Matches }
}

2 个答案:

答案 0 :(得分:0)

这取自我评论中的链接。

$testpath = "C:\Temp\z" ;$path=gci $testpath -Recurse
$path.fullname | ForEach-Object {(GC $_ -Raw).Replace('line2','NewLine2')| Set-Content $_}

答案 1 :(得分:0)

我发现这是替换文本文件中的值的快捷方法:

[System.IO.File]::WriteAllText(
    'C:\path\to\export-file.xml',
    ([System.IO.File]::ReadAllText('C:\path\to\import-file.xml') -replace 'en-us', 'new value'),
    (New-Object System.Text.UTF8Encoding($false))
)

它将读取import-file.xml中的所有内容,替换' en-us'有了新的价值'并使用UTF8保存到export-file.xml,无BOM编码。正如Ansgar在上面的评论中指出的那样,我无法保证这不会破坏你的xml。