从路径获取特定的文件夹名称

时间:2018-05-07 18:31:33

标签: powershell powershell-v3.0

如何获取第四个文件夹名称并将其存储在变量中,同时循环存储在父文件夹中的文件。例如,如果路径是

C:\ParentFolder\Subfolder1\subfolder2\subfolder3\file.extension 
C:\ParentFolder\Subfolder1\subfolder2\subfolder4\file.extension 
C:\ParentFolder\Subfolder1\subfolder2\subfolder5\file.extension 

然后subfolder2名称应该存储在一个变量中。任何人都可以帮我这个吗?

get-childitem $DirectorNane -Recurse | Where-Object{!($_.PSIsContainer)} | % {

    $filePath = $_.FullName

    #Get file name
    $fileName = Split-Path -Path $filePath -Leaf
}   $FileI = Split-Path -Path $filePath -Leaf

提前致谢!

2 个答案:

答案 0 :(得分:6)

您可以使用$filePath变量上的-split operator来获得您想要的内容。

$split = $filePath -split '\\'
$myvar = $split[3]

我们使用双反斜杠来分割,因为第一个斜杠转义斜杠字符以分割路径。然后,我们可以引用在“split”变量中生成的数组中我们想要的路径部分。

此外,您可以使用以下代码使用单行解决此问题:

$myvar = $filepath.split('\')[3]

这将确保您始终获得数组中的第四个元素,但由于您无法根据具有其他脚本的条件指定您想要的内容,因此灵活性稍差。

答案 1 :(得分:0)

如果您询问如何获取包含文件的目录的父目录,可以两次调用Split-Path。例如:

$filePath = "C:\ParentFolder\Subfolder1\subfolder2\subfolder3\file.extension"
$parentOfParent = Split-Path (Split-Path $filePath)
# $parentOfParent now contains "C:\ParentFolder\Subfolder1\subfolder2"