2016-05-03 2 views
7

Я использую -replace, чтобы изменить путь от источника к пункту назначения. Однако я не уверен, как обращаться с символом \. Например:Как обращаться с символом обратной косой черты в PowerShell? Замените операции с строкой?

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

$test = "\\somedir\somefile" 

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

После этой операции $ DestFile устанавливается в

"\\\anotherdir\somefile" 

Что такое правильный способ сделать это, чтобы избежать тройной обратной косой черты в результате?

ответ

11

Попробуйте следующее:

$source = "\\\\somedir" 

Вы были только соответствие 1 обратную косую черту, когда заменяющий, который дал вам три \\\ в начале вашего пути.

обратной косой является характер а regex побег так \\ будет рассматриваться как, матч только один \ и не два \\. Поскольку первая обратная косая черта - символ escape и не используется для соответствия.

Другой способ обработки обратных косых черт - использовать функцию выхода regex.

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

'[regex] :: Escape()' - более безопасное решение, поскольку оно будет обрабатывать другие специальные символы (например, '+' или круглые скобки). –

+0

спасибо, это сработало, хотя я использовал регулярное выражение – user175562

+0

'' '[regex] :: Escape()' '' не работает так, как ожидалось, для путей, содержащих '.' –

Смежные вопросы