为了账号安全,请及时绑定邮箱和手机立即绑定

如何按照Windows资源管理器的方式按文件名排序?

如何按照Windows资源管理器的方式按文件名排序?

如何按照Windows资源管理器的方式按文件名排序?这是应用于powershell的“ASCIIbetical”命令与“Natural”命令的着名问题。为了能够以与资源管理器相同的方式对powershell进行排序,您可以在StrCmpLogicalW API上使用此包装器,它实际上为Windows资源管理器执行自然排序。这需要一些管道。但是,这篇文章表明在python中有一个三线程实现的排序。人们希望Get-ChildItem cmdlet或至少文件系统提供程序可以具有内置的自然排序选项。不幸的是,他们没有。所以这是一个问题,Powershell中最简单的实现是什么?简单来说,我的意思是编写的代码量最少,可能没有第三方/外部脚本/组件。理想情况下,我想要一个简短的 Powershell函数来为我做排序。
查看完整描述

3 回答

?
繁花如伊

TA贡献2012条经验 获得超12个赞

下面是一些非常简短的代码(只是$ToNatural脚本块),它使用正则表达式和匹配赋值器来处理带有空格的数字。然后我们像往常一样用填充数字对输入进行排序,结果实际上得到了自然顺序。


$ToNatural = { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }


'----- test 1 ASCIIbetical order'

Get-Content list.txt | Sort-Object


'----- test 2 input with padded numbers'

Get-Content list.txt | %{ . $ToNatural }


'----- test 3 Natural order: sorted with padded numbers'

Get-Content list.txt | Sort-Object $ToNatural

输出:


----- test 1 ASCIIbetical order

1.txt

10.txt

3.txt

a10b1.txt

a1b1.txt

a2b1.txt

a2b11.txt

a2b2.txt

b1.txt

b10.txt

b2.txt

----- test 2 input with padded numbers

                   1.txt

                  10.txt

                   3.txt

a                  10b                   1.txt

a                   1b                   1.txt

a                   2b                   1.txt

a                   2b                  11.txt

a                   2b                   2.txt

b                   1.txt

b                  10.txt

b                   2.txt

----- test 3 Natural order: sorted with padded numbers

1.txt

3.txt

10.txt

a1b1.txt

a2b1.txt

a2b2.txt

a2b11.txt

a10b1.txt

b1.txt

b2.txt

b10.txt

最后我们使用这个单行按照自然顺序按名称对文件进行排序:


Get-ChildItem | Sort-Object { [regex]::Replace($_.Name, '\d+', { $args[0].Value.PadLeft(20) }) }

输出:


    Directory: C:\TEMP\_110325_063356


Mode                LastWriteTime     Length Name                                                                                                                  

----                -------------     ------ ----                                                                                                                  

-a---        2011-03-25     06:34          8 1.txt                                                                                                                 

-a---        2011-03-25     06:34          8 3.txt                                                                                                                 

-a---        2011-03-25     06:34          8 10.txt                                                                                                                

-a---        2011-03-25     06:34          8 a1b1.txt                                                                                                              

-a---        2011-03-25     06:34          8 a2b1.txt                                                                                                              

-a---        2011-03-25     06:34          8 a2b2.txt                                                                                                              

-a---        2011-03-25     06:34          8 a2b11.txt                                                                                                             

-a---        2011-03-25     06:34          8 a10b1.txt                                                                                                             

-a---        2011-03-25     06:34          8 b1.txt                                                                                                                

-a---        2011-03-25     06:34          8 b2.txt                                                                                                                

-a---        2011-03-25     06:34          8 b10.txt                                                                                                               

-a---        2011-03-25     04:54         99 list.txt                                                                                                              

-a---        2011-03-25     06:05        346 sort-natural.ps1                                                                                                      

-a---        2011-03-25     06:35         96 test.ps1            


查看完整回答
反对 回复 2019-08-13
  • 3 回答
  • 0 关注
  • 1539 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信