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 に答える