删除文件路径的根

时间:2019-02-05 03:10:37

标签: powershell split

我试图“修剪”文件路径的第一部分,所以在通配符之后,只剩下一些尾随部分。 我可以执行以下操作,但我知道这并不理想,并且由于路径的性质,可能会返回路径的错误部分。您在看到“ 9”的地方可以是任何数字:

$Path = Get-Item '\\servername\share1\share2\share3\idontwantthis9\whatiwant\alsowhatiwant'

$PathRoot = ($Path.FullName).Replace($Path.Root.FullName,'') #Not neccessary, but gets me closer.
$PathRoot.Split("\")[1..100] -join('\') #Any better way of saying 1..<everything after> suggestions?

这将返回:

  

idontwantthis9 \ whatiwant \ alsowatwant

哪一个很棒,但是我期望一个类似于'split-path'的命令摆脱掉'idontwantthisX'部分,并使用通配符。

我意识到我可以使用:

$Path.Split('\')[7..8] -join('\')

但是,路径可以是可变长度的,唯一的常数是路径中的某个地方,它会读取带有随机对数的'idontwantthisX'。

2 个答案:

答案 0 :(得分:1)

-replace运算符与用于去除前缀的正则表达式(正则表达式)一起使用:

$path = '\\servername\share1\share2\share3\idontwantthis9\whatiwant\alsowhatiwant'

$path -replace '^.+\\idontwantthis\d+\\'

以上产生whatiwant\alsowhatiwant

答案 1 :(得分:1)

这是mklement0的一个略微变体。直到我完成我才注意到他。 [ blush ]我使用了基于正则表达式的-split而不是-replace

$Path = '\\servername\share1\share2\share3\idontwantthis9\whatiwant\alsowhatiwant'
$RemoveUpToThisRegex = 'idontwantthis\d{1,}\\'

$KeepThisPathPart = ($Path -split $RemoveUpToThisRegex)[1]

$KeepThisPathPart

输出...

whatiwant\alsowhatiwant