в моем сценарии я проверяю некоторые файлы и хотел бы заменить часть их полного пути с другой строкой (путь UNC соответствующей доли).
Пример:
$fullpath = "D:\mydir\myfile.txt"
$path = "D:\mydir"
$share = "\\myserver\myshare"
write-host ($fullpath -replace $path, $share)
Последняя строка дает мне ошибку, так как $path не не содержит допустимый шаблон для регулярных выражений.
Как я могу изменить строку, чтобы заставить оператор замены обработать содержание переменного $path как литерал?
Заранее спасибо, Kevin
Используйте [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
Метод $ variable -replace $ strFind, $ strReplace
распознает шаблоны регулярных выражений.
Но метод $ variable.Replace ($ strFind, $ strReplace)
не работает. Так что попробуйте это.
PS > $fullpath.replace($path,$share)
\ myserver \ myshare \ myfile.txt