web-dev-qa-db-ja.com

PowerShellでバックスラッシュ文字を処理する方法-文字列操作を置き換えますか?

-replaceを使用して、ソースから宛先へのパスを変更しています。ただし、\文字の処理方法がわかりません。例えば:

$source = "\\somedir"
$dest = "\\anotherdir"

$test = "\\somedir\somefile"

$destfile = $test -replace $source, $dest

この操作の後、$ destfileは

"\\\anotherdir\somefile"

結果のトリプルバックスラッシュを回避するためにこれを行う正しい方法は何ですか?

11
user175562

以下を試してください:

$source = "\\\\somedir"

置換時に一致したバックスラッシュは1つだけで、3つの\\\パスの先頭。

バックスラッシュはregexエスケープ文字なので、\\は、1つの\と2つの\\。最初のバックスラッシュはエスケープ文字であり、一致には使用されません。

バックスラッシュを処理する別の方法は、regexエスケープ関数を使用することです。

$source = [regex]::escape('\\somedir')
17
Richard