Powershell:根据文件数量对目录进行排序

Powershell:根据文件数量对目录进行排序

我正在尝试创建一个列表,计算文件夹中文件的数量,然后根据该数量对文件夹进行排序。我有以下代码,但它不起作用(即不排序):

Get-Childitem -Directory | 
    Foreach-Object {
        $folderList=$_.Name
        $fileListInFolder=(Get-Childitem -file -Path $_)
        $fileCountInFolder=@()
        $fileCountInFolder+=("{0:d2}" -f $fileListInFolder.count)
        $arrayOfFileCountInFolder=(Write-Output $fileCountInFolder" "$folderList)
        $arrayOfFileCountInFolder | Sort-Object
    }

该脚本生成如下所示的列表(第一个数字代表文件数,字符串的其余部分是目录):

41 02 F OR 12K48b
21 03 F CC 12K48b
05 05 F OR 12K48b
21 06 B OR 06K64b

我得到了我想要的列表,但它没有排序。我错过了什么?

PS 如果我手动将这些字符串输入到数组中,排序就会起作用。例如:

$array=@("41 02 F OR 12K48b","21 03 F CC 12K48b","05 05 F OR 12K48b","21 06 B OR 06K64b")

$array | Sort-Object

结果是:

05 05 F OR 12K48b
21 03 F CC 12K48b
21 06 B OR 06K64b
41 02 F OR 12K48b

答案1

您的代码未进行排序,因为您立即将每个文件夹的计数发送到Sort-Object。尝试在收集/计数文件后发送结果。将Foreach-Object的右括号移到管道符号前面,然后进行排序。

Get-Childitem -Directory | 
    Foreach-Object {
        $folderList=$_.Name
        $fileListInFolder=(Get-Childitem -file -Path $_)
        $fileCountInFolder=@()
        $fileCountInFolder+=("{0:d2}" -f $fileListInFolder.count)
        $arrayOfFileCountInFolder=(Write-Output $fileCountInFolder" "$folderList)
        $arrayOfFileCountInFolder} | Sort-Object  

相关内容