订购用fullstop分隔的编号目录

时间:2016-06-30 11:13:01

标签: powershell

我有一个查询,它返回路径中的文件夹列表:

Get-ChildItem "." -Directory -Filter "*"| Select -Property Name | Sort-Object Name -Descending

在结果中我获得了一个对象列表:

Mode                LastWriteTime     Length Name
----                -------------     ------ ----
d----        30/06/2016     09:51            1.3.35.6503
d----        14/12/2015     11:04            1.3.29.5885                                                                                                                                         
d----        16/11/2015     09:54            1.3.28.5790                                                                                                                                         
d----        27/06/2016     19:33            1.18.3.6497                                                                                                                                         
d----        21/06/2016     19:33            1.18.2.6492                                                                                                                                         
d----        21/06/2016     11:55            1.18.1.6490                                                                                                                                         
d----        10/05/2016     19:34            1.17.99.6427   

这是我没想到的顺序!查看Windows资源管理器,如果我按降序对列进行排序,它会按正确顺序排列。

它似乎是按照文本分别对它们进行排序,而Windows资源管理器则更聪明,并通过字符串进行。

PowerShell中是否有一种简单的方法可以将此顺序转换为正确的顺序(例如Windows资源管理器)?我正在考虑一个函数来返回列表并添加一个带有FullName和Name的新对象,方法是将原始名称拆分为4个元素并按单独排序。

1 个答案:

答案 0 :(得分:3)

您希望按Version对文件进行排序。您不需要拆分字符串,只需将BaseName转换为version并对其进行排序:

Get-ChildItem '.' -Directory -Filter "*" | sort { [version]$_.BaseName }

<强>结果:

Mode                LastWriteTime         Length Name                                                                                                                                     
----                -------------         ------ ----                                                                                                                                     
-a----       30.06.2016     13:15              0 1.3.28.5790.txt                                                                                                                          
-a----       30.06.2016     13:15              0 1.3.29.5885.txt                                                                                                                          
-a----       30.06.2016     13:15              0 1.3.35.6503.txt                                                                                                                          
-a----       30.06.2016     13:15              0 1.17.99.6427.txt                                                                                                                         
-a----       30.06.2016     13:15              0 1.18.1.6490.txt                                                                                                                          
-a----       30.06.2016     13:15              0 1.18.2.6492.txt                                                                                                                          
-a----       30.06.2016     13:15              0 1.18.3.6497.txt