0

我对 powershell 很陌生,但我正在尝试替换 .xml 文件中的某些字符。看起来我已经绊倒了第一步。

例如,我将尝试替换:

<?xml version="1.0"?>

<?xml version="2.0"?>

下面你会发现我到目前为止写的代码:

Get-Childitem "C:\Users\jp\Desktop\Test" | ForEach-Object {

        $Content = Get-Content $_.fullname
        $Content = ForEach-Object { $Content -replace "(<?xml version=`"1.0`"?>)","(<?xml version=`"2.0`"?>)" }

        Set-Content $_.fullname $Content -Force

        }

问题是这只是我必须替换的字符串的开始。有没有办法独立于里面的字符替换一定范围内的任何文本?

我想知道无论我里面有什么特殊字符,如何替换一个完整的字符串。提前致谢。

4

2 回答 2

1

使用 Escape 方法在运行时转义特殊字符。您不需要转义替换模式:

(Get-Content c:\dump\xml) | 
ForEach-Object {$_ -replace [regex]::Escape('<?xml version="1.0"?>'),'<?xml version="2.0"?>'} | 
Set-Content c:\dump\xml
于 2012-08-11T11:23:46.667 回答
0

嗨,有很多方法可以进行正则表达式匹配,您只需将代码更改为以下代码即可。

\ 只是转义了特殊的正则表达式章程,以便匹配部分起作用。

Get-Childitem "c:\dump\xml" | ForEach-Object {

        $Content = Get-Content $_.fullname
        $Content = ForEach-Object { $Content -replace '(<\?xml version="1\.0"\?>)','<?xml version="2.0"?>' }

        Set-Content $_.fullname $Content -Force

        }
于 2012-08-10T11:24:57.323 回答