我试图“修剪”文件路径的第一部分,所以在通配符之后,只剩下一些尾随部分。 我可以执行以下操作,但我知道这并不理想,并且由于路径的性质,可能会返回路径的错误部分。您在看到“ 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'。
答案 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