替换Powershell字符串中的路径

时间:2010-02-25 11:44:44

标签: regex powershell

在我的脚本中我检查了一些文件,并希望用另一个字符串(相应共享的unc路径)替换其完整路径的一部分。

示例:

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

最后一行给出了一个错误,因为$ path不包含正则表达式的有效模式。

如何修改该行以使替换运算符将变量$ path的内容作为文字处理?

提前致谢, 凯文

2 个答案:

答案 0 :(得分:26)

使用[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

答案 1 :(得分:11)

方法$variable -replace $strFind,$strReplace了解正则表达式模式 但方法$variable.Replace($strFind,$strReplace)没有。试试吧。

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

\ MYSERVER \ myshare的\ myfile.txt的