我有一个文件夹,其中包含每个应用程序版本(十进制数)的子文件夹。现在,我有一个powershell
用于版本比较的脚本。问题是我无法按预期对其进行排序。我该如何在一行代码中解决它,因为我是从批处理脚本中进行的。
使用Get-ChildItem
查看文件夹内容
当前排序(从batch
脚本执行:
powershell -Command "& {Get-ChildItem "\folder_dir\" -Name | sort-object -descending }
解决方案选项:
- 按日期排序
Get-ChildItem
,并以某种方式仅打印文件夹的名称(不像常规输出中那样显示标题“名称”) - 按名称排序
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。