使用PowerShell从拆分路径获取文件的最低级别目录名称

时间:2012-04-25 14:02:20

标签: powershell

我需要获取文件路径名的最后一部分。

示例:

c:\dir1\dir2\dir3\file.txt

我需要将dir3变成变量。

我一直在尝试使用分裂路径,但它给了我整条路径。

5 个答案:

答案 0 :(得分:54)

这需要两次Split-Path AFAICT:

的调用
PS> Split-Path (Split-Path c:\dir1\dir2\dir3\file.txt -Parent) -Leaf
dir3

答案 1 :(得分:10)

这个问题特别要求分裂路径,但其他一些方法是:

如果文件存在,我发现它更好:

(Get-Item c:\dir1\dir2\dir3\file.txt).Directory.Name

如果文件不存在,则无效。在这种情况下,另一种方法是使用.NET API,例如:

$path = [System.IO.Path];
$path::GetFileName($path::GetDirectoryName("c:\dir1\dir2\dir3\file.txt"))

答案 2 :(得分:3)

使用System.Uri的另一个选项:

PS> ([uri]"c:\dir1\dir2\dir3\file.txt").segments[-2].trim('/')
dir3

如果文件存在于磁盘上:

PS> (dir c:\dir1\dir2\dir3\file.txt).directory.name

答案 3 :(得分:2)

如果您想保持简单并且路径将采用正常形式,则可以使用String.Split()

"c:\dir1\dir2\dir3\file.txt".split("\")[-2]

答案 4 :(得分:1)

一般来说,如果你想要你所使用的目录的名称(感谢Shay Levi的原创想法):

PS> (DIR).directory.name [0]