2017-04-27 68 views
-2

我尝试使用以下PowerShell脚本列出从文件夹中的图像文件名列表排序不起作用的图像

Get-ChildItem C:\TestExtraction\ps\Images | Select-Object Name | Sort-Object Name 

我有下面的输出

image1.png 
image10.png 
image100.png 
image101.png 
image102.png 
image103.png 
image104.png 
image105.png 
image106.png 
image107.png 
image108.png 
image109.png 
image11.png 
image110.png 
image111.png 
image112.png 
image113.png 
image114.png 
image115.png 
image116.png 
image117.png 
image118.png 
image119.png 
image12.png 
image120.png 
image121.png 
image122.png 

我是什么在这个简单的脚本丢失,因为没有被正确排序,像

image1.png 
image2.png 
image3.png 
... 
+0

这是具有混合的文本/数字的常见问题。看看http://stackoverflow.com/questions/1022203/sorting-strings-containing-numbers-in-a-user-friendly-way – Sean

+0

我已经试过这个..仍然不工作 –

+0

使用正则表达式排序。 –

回答

1

Roman Kuzmin's Answer在曲詹姆斯提到的提到完美。

$ToNatural = { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) } 
Gci *.jpg | Sort-Object $ToNatural |select Name 

样本输出

Name 
---- 
pic1.jpg 
pic2.jpg 
pic3.jpg 
pic4.jpg 
pic5.jpg 
pic6.jpg 
pic7.jpg 
pic8.jpg 
pic9.jpg 
pic10.jpg