替换Powershell叶子中的角色

时间:2016-09-26 14:29:46

标签: powershell

我试图在XML文件中用'GBP'替换'£'的出现。最初使用以下代码行读取该行:

$oldName = @(Select-Xml -Xml ([xml]$xml) -XPath "//fileName" | foreach {$_.Node.Innerxml} )

然后使用以下代码行进行替换:

$newName = $oldName -replace('£', 'GBP')
(get-content $file) | foreach-object {$_ -replace [Regex]::Escape($oldName), $newName} | set-content $file

(我最初尝试对XML元素执行更新,但遇到了麻烦,因此使用了基本版本。)

虽然这确实找到并用GBP取代了£符号,但它也留下了一个Â(alt + 0194),如下所示:

'total of ÂGBP200.docx'

在发生这种情况之后,如果我然后手动编辑文件并删除Â并再次使用£符号替换GBP(返回'总计£200.docx'),则下次处理时它将处理正确脚本运行,没有Â。

的迹象

从中读取$ oldName的原始XML文件的编码是UTF-7,并且没有为'set-content $ file'指定编码方法。我已经尝试将其指定为UTF-7,它添加了许多奇怪的字符代替括号和UTF-8,它再次给出了Â。

我真的很感激指针,也许是否有更合理的方法来做到这一点。

  • 我不确定是否正在读取$ oldName或者是-replace的结果。

谢谢,Rob。

0 个答案:

没有答案