用XML替换引号之间的文本

时间:2013-09-29 22:58:16

标签: powershell

我正在尝试找到一种方法来更改XML文件中的未知文本(可能是任何内容)以进行打印机迁移。 有问题的文字是 PrintProcessor =“hpcpp111”

“打印处理器”部分可能包含任何内容,具体取决于打印机型号,类型和驱动程序。如果可能的话,我更愿意使用powershell,因为我正在尝试理解脚本以及它是如何工作的,但我发现它有点令人困惑。我们可能需要手动编辑数千个这些文件,因为我们正在迁移5,500台打印机。 我找到了一些代码,例如

function Reset-InfoPathTemplateLink {
Param(
[string]$FilePath,
[string]$FileExtension,
[string]$OldPath,
[string]$NewPath
)
$files = Get-ChildItem $FilePath -Filter $FileExtension
foreach ($file in $files) {
(Get-Content $file.fullname) |
ForEach-Object {$_ -replace $OldPath,$NewPath} |
Set-Content $file.fullname
} #end foreach
} #end function

如果我点源它然后运行这个命令

Reset-InfoPathTemplateLink -FilePath“c:\ test2”-FileExtension“ .xml”-OldPath“PrintProcessor =”“” - NewPath“PrintProcessor ='”WinPrint“'”

WinPrint会添加到当前打印处理器的开头,这不是理想的选择。如果有人有关于如何使其工作的提示,或者如果他们可以提出更好的方法来做到这一点我会很感激

1 个答案:

答案 0 :(得分:0)

这是您可以使用PowerShell替换文本文件中的模式的方法:

$path="c:\myPath.txt"
(Get-Content $path) -replace '(PrintProcessor=")(.*)(")','$1WinPrint$3' | Set-Content $path