PowerShell检索最后一级的两个目录

时间:2017-05-23 19:40:04

标签: powershell

我有这个变量:

$sourcePath ="D:\test1\test2\test3\test4"

我想要审核"\test3\test4"

我试过这个,但它没有用:

"\Split-Path (Split-Path $sourcePath -Parent) \ -Leaf Split-Path $sourcePath -Leaf"

3 个答案:

答案 0 :(得分:1)

如果您尝试在双引号内运行cmdlet,则需要使用子表达式$(),否则将无法对其进行评估。

"\$(Split-Path (Split-Path $sourcePath -Parent) -Leaf)\$(Split-Path $sourcePath -Leaf)"

作为替代方法,您可以使用Get-Item的父属性来检索所需的级别,然后使用-replace将其删除。

$sourcePath ="D:\test1\test2\test3\test4"
$ParentParent = (Get-Item $sourcePath).Parent.Parent.FullName
$regex = [regex]::escape($ParentParent)
$sourcePath -replace $regex,""

答案 1 :(得分:0)

其他解决方案

$sourcePath ="D:\test1\test2\test3\test4"
"\" + (($sourcePath -split "\\")[-2..-1] -join "\")

答案 2 :(得分:0)

或者

$sourcePath ="D:\test1\test2\test3\test4"
$Root2Level=[System.IO.Path]::GetDirectoryName([System.IO.Path]::GetDirectoryName($sourcePath))
$sourcePath.Replace($Root2Level, '')