7
$100 = "$env:APPDATA/somthing"
$iamhere = "C:/example"
$100 = $100 -replace "`$env:APPDATA\somthing", "$iamhere" 

このエラーが発生しますが、その内容を(テキスト形式で)$100置き換えたいです。$iamhere

Regular expression pattern is not valid: $env:APPDATA\somthing.
At line:1 char:1
$100 = $100 -replace "`$env:APPDATA\somthing", "$iamhere"
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
   + CategoryInfo          : InvalidOperation: ($env:APPDATA\somthing:String) [], RuntimeException
   + FullyQualifiedErrorId : InvalidRegularExpression

これは、一部のテキストをディレクトリに置き換えようとしているためだと思いますが、の変数内のテキストが必要です$iamhere

4

2 に答える 2

16

オペレーターは、-replace指定した入力文字列を正規表現として解析します。\文字は正規表現の特殊文字であるため、文字どおりに扱いたい場合は、その前に a を追加してエスケープする必要があります\。幸いなことに、.NET には、それを行うための便利な関数が用意されています。

# ~> [Regex]::Escape("$env:APPDATA/somthing")
C:\\Users\\username\\AppData\\Roaming/somthing

したがって、次のように例を更新してください。

$100 = $100 -replace [Regex]::Escape("$env:APPDATA/somthing"), $iamhere

$iamhere を囲む引用符は必要ないことに注意してください (ただし、これは文字列であるため、違いはありません)。

于 2013-09-25T00:56:11.877 に答える