-replaceを使用して、ソースから宛先へのパスを変更しています。ただし、\文字の処理方法がわかりません。例えば:
$source = "\\somedir"
$dest = "\\anotherdir"
$test = "\\somedir\somefile"
$destfile = $test -replace $source, $dest
この操作の後、$ destfileは
"\\\anotherdir\somefile"
結果のトリプルバックスラッシュを回避するためにこれを行う正しい方法は何ですか?
以下を試してください:
$source = "\\\\somedir"
置換時に一致したバックスラッシュは1つだけで、3つの\\\
パスの先頭。
バックスラッシュはregex
エスケープ文字なので、\\
は、1つの\
と2つの\\
。最初のバックスラッシュはエスケープ文字であり、一致には使用されません。
バックスラッシュを処理する別の方法は、regex
エスケープ関数を使用することです。
$source = [regex]::escape('\\somedir')