Powershell - 在替换中使用变量

时间:2013-06-06 19:58:30

标签: powershell

我正在使用.replace,直到我发现它区分大小写。 所以我重写了一行代码来代替使用-replace。

这是有效的,但区分大小写:

$SourcePath = 'c:\scripts\test
$folder = 'c:\testing\test'
$sourceFullPath = 'c:\scripts\test\FolderToTest'
$sourceFileRelativePath = $sourceFullPath.Replace($SourcePath, "")
$destFullFilePath = $folder + $sourceFileRelativePath

Write-output $destFullFilePath
c:\testing\test\FolderToTest

我如何将其转换为使用-replace或是否有办法使用.net .replace不区分大小写?

注意:这部分代码将在一个函数中,因此它们不会是静态的。我为这篇文章添加了示例,但它们可以是任何文件路径。

谢谢!

1 个答案:

答案 0 :(得分:1)

与采用字符串的Replace方法不同,replace运算符采用正则表达式模式。 $ SourcePath需要进行转义,因为它包含特殊正则表达式字符的反斜杠。

$sourceFileRelativePath  = $sourceFullPath -replace [regex]::escape($SourcePath)
$destFullFilePath = Join-Path $folder $sourceFileRelativePath