如何对右十进制数进行排序

如何对右十进制数进行排序

我有一个文件夹,其中包含每个应用程序版本(十进制数)的子文件夹。现在,我有一个powershell用于版本比较的脚本。问题是我无法按预期对其进行排序。我该如何在一行代码中解决它,因为我是从批处理脚本中进行的。

使用Get-ChildItem查看文件夹内容

当前排序(从batch脚本执行:

powershell -Command "& {Get-ChildItem "\folder_dir\" -Name | sort-object -descending }

解决方案选项:

  1. 按日期排序Get-ChildItem,并以某种方式仅打印文件夹的名称(不像常规输出中那样显示标题“名称”)
  2. 按名称排序Get-ChildItem,并以某种方式对其进行排序(问题出在十进制数上)

例如(降序或升序无所谓,重要的是顺序):

Folder content:
1.0
1.111
1.11
2.2
1.18
2.5
2.44

Current output:
2.5 <-- wrong place
2.44
2.2
1.18 <-- wrong place
1.111
1.11
1.0

Expected sort:
1.0
1.11
1.18
1.111
2.2
2.5
2.44

答案1

感谢@Seth 解决方案

关联

最终命令:powershell -Command "& {Get-ChildItem "\\nas\shared\Public\Igor\gscript\version" -Name | sort-object { [regex]::Replace($_, '\d+', { $args[0].Value.PadLeft(20) }) }}

答案2

你的脚本运行完美。

您按降序排序,这正是它所做的。

注意,“.”左边的数字也是从高到低。

因此你的脚本需要如下:

powershell -Command "& {Get-ChildItem "\\nas\shared\Public\Igor\gscript\version" 
   -Name | sort-object }

Sort-Object 默认按升序排序,除非使用 -descending。

相关内容