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

Powershell 从路径获取特定的文件夹名称,powershell,powershell-3.0,Powershell,Powershell 3.0,如何获取第四个文件夹名并将其存储在变量中,同时循环浏览父文件夹中存储的文件。例如,如果路径为 C:\ParentFolder\Subfolder1\subfolder2\subfolder3\file.extension C:\ParentFolder\Subfolder1\subfolder2\subfolder4\file.extension C:\ParentFolder\Subfolder1\subfolder2\subfolder5\file.extension 然后子文件夹2

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

C:\ParentFolder\Subfolder1\subfolder2\subfolder3\file.extension 
C:\ParentFolder\Subfolder1\subfolder2\subfolder4\file.extension 
C:\ParentFolder\Subfolder1\subfolder2\subfolder5\file.extension 
然后子文件夹2名称应存储在变量中。谁能帮我一下吗

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

    $filePath = $_.FullName

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

您可以使用
$filePath
变量上的来获取所需内容

$split = $filePath -split '\\'
$myvar = $split[3]
我们使用双反斜杠来分割路径,因为第一个斜杠转义斜杠字符来分割路径。然后,我们可以引用在“split”变量中生成的数组中所需的路径部分

此外,您还可以使用以下代码通过一个单行程序解决此问题:

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


这将确保您始终获得数组中的第四个元素,但灵活性稍差,因为您无法根据附加脚本的条件指定确切需要的内容。

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

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

就我个人而言,我喜欢操作符,因为如果我想返回并将
split
变量用于其他内容,我可以(例如,如果我想获取第三个子文件夹,除非它名为
x
,然后获取第四个子文件夹,或者类似的内容)。对于OP的用例,这也是一个可行的选项,因此,如果您愿意,请随意编辑我的答案并将其添加到中。@brycommandonald两者都很方便,您只需@LotPings:我的建议是坚持使用
-split
操作符:它可以做
所能做的一切。split
方法可以做的更多,它避免了方法语法陷阱,它还避免了由于引入了新的.NET方法重载而导致的行为更改问题-请参阅带有
-split
运算符的一行代码:
$myvar=($filepath-split'\\')[3]
@mklement0再次提供了一个很好且全面的解释+1很遗憾,您不能直接获得答案。感谢您的回复!子文件夹2将有一个唯一的值,因此我必须将子文件夹2的值存储在一个变量中,并在使用WebService时将其用作输入。我试图猜测您要做什么。您真的需要路径中的第四个元素,还是需要文件父级的父级?(你的问题没有说。)