如何将子项目从最深的子文件夹排序到最高的?

pen*_*ake 4 powershell powershell-3.0

我尝试通过执行以下操作来获取文件夹的文件及其子文件夹中的文件:

$files = Get-ChildItem "d:\MyFolders" -recurse

问题:如何按文件夹层次结构对 $files 进行排序,这意味着最深的文件将位于数组的顶部,而最上面的将是最后一个元素?

PS:原因是如果我重命名某些文件夹,那么重命名的文件夹下的文件路径将无效。所以我想先处理最深的,然后移到上层文件。

ojk*_*ojk 6

它没有按深度专门排序,但由于排序的原因,它会将同一父级中的文件夹组合在一起。

$files | Sort-Object -Descending FullName | Select-Object FullName
Run Code Online (Sandbox Code Playgroud)

如果你真的需要按文件夹深度排序,你可以这样做:

$files | Select-Object FullName, @{Name="FolderDepth";Expression={$_.DirectoryName.Split('\').Count}} | Sort-Object -Descending FolderDepth,FullName
Run Code Online (Sandbox Code Playgroud)

如果您想反转排序,只需删除 -Descending。