2016-05-03 158 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()'''不能按预期的方式对包含'。'的路径起作用。 –

相关问题