我有一个XML文件,想要在XML文档中找到所有“en-us”字符串并替换为不同的文化。我能找到它们但不知道如何更换它们。尝试替换,获取内容和设置内容,但无法正常工作。也许我没有正确使用它。
$testPath = "C:\temp\testing\"
$path = Get-ChildItem $testPath -Recurse
ForEach ($file in $path){
$file | Select-String -AllMatches "en-us" | % { $_.Matches }
}
答案 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。