2016-05-03 127 views
7

我正在使用-replace來更改從源到目標的路徑。但是我不知道如何處理\角色。例如:如何處理PowerShell中的反斜槓字符 - 替換字符串操作?

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

$test = "\\somedir\somefile" 

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

此操作後,$ destfile設置爲

"\\\anotherdir\somefile" 

什麼是這樣做是爲了避免在結果三重反斜槓正確的方法是什麼?

回答

11

嘗試以下操作:

$source = "\\\\somedir" 

你只匹配更換時1個反斜槓,這給了你三個\\\在你的路徑的開始。

反斜線是regex轉義字符,所以\\將被視爲,比賽只有一個\而不是兩個\\。由於第一個反斜槓是轉義字符而不是用於匹配。

另一種處理反斜槓的方法是使用regex轉義函數。

$source = [regex]::escape('\\somedir') 
+1

'[正則表達式] ::逃逸()'是更安全的解決方案,因爲它會處理其它特殊字符(例如'+'或括號中)爲好。 –

+0

謝謝,雖然我使用正則表達式解決方案 – user175562

+0

'''[regex] :: Escape()'''不能按預期的方式對包含'。'的路徑起作用。 –

相關問題