Путь замены в строке Powershell

в моем сценарии я проверяю некоторые файлы и хотел бы заменить часть их полного пути с другой строкой (путь UNC соответствующей доли).

Пример:

$fullpath = "D:\mydir\myfile.txt"
$path = "D:\mydir"
$share = "\\myserver\myshare"
write-host ($fullpath -replace $path, $share)

Последняя строка дает мне ошибку, так как $path не не содержит допустимый шаблон для регулярных выражений.

Как я могу изменить строку, чтобы заставить оператор замены обработать содержание переменного $path как литерал?

Заранее спасибо, Kevin

12
задан bitfrickler 25 February 2010 в 11:44
поделиться

2 ответа

Используйте [regex] :: Escape () - очень удобный метод

$fullpath = "D:\mydir\myfile.txt"
$path = "D:\mydir"
$share = "\\myserver\myshare"
write-host ($fullpath -replace [regex]::Escape($path), $share)

Вы также можете использовать мой фильтр rebase для этого, посмотрите Powershell: subtract $ pwd from $ file.Fullname

27
ответ дан 2 December 2019 в 03:48
поделиться

Метод $ variable -replace $ strFind, $ strReplace распознает шаблоны регулярных выражений.
Но метод $ variable.Replace ($ strFind, $ strReplace) не работает. Так что попробуйте это.

PS > $fullpath.replace($path,$share)  

\ myserver \ myshare \ myfile.txt

12
ответ дан 2 December 2019 в 03:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: