Ani*_*Saw 2 sorting powershell powershell-2.0 powershell-3.0 version-sort
我是电源外壳的新手.我正在尝试对名称中间有版本号的文件列表进行排序.
这是文件列表:
sample-file-1.1.0-patch.zip
sample-file-1.1.1-patch.zip
sample-file-1.1.2-patch.zip
sample-file-1.1.2.1-fix-patch.zip
sample-file-1.1.3-patch.zip
sample-file-1.1.3.1-fix-patch.zip
..
sample-file-1.1.15-patch.zip
sample-file-1.1.15.1-fix-patch.zip
sample-file-1.1.15.2-fix-patch.zip
..
sample-file-2.0.0-patch.zip
sample-file-2.0.1-patch.zip
..
Run Code Online (Sandbox Code Playgroud)
我会请你帮我分类逻辑.
谢谢
您的示例输入最简单的方法如下,它假定后面的第一个数字-开始版本号,并以后续的最后一个数字结束-:
Get-ChildItem *.zip | Sort-Object { [version]($_.Name -replace '^[^\d]+-(.*\d)-.*', '$1') }
Run Code Online (Sandbox Code Playgroud)
$_.Name -replace '^[^\d]+-(.*\d)-.*', '$1' 从每个文件名中提取版本号作为字符串.
[version]将该字符串强制转换为版本号对象(System.Version)[1]
,该对象可根据版本号组件进行排序.
将整个表达式作为脚本块{ ... }传递,Sort-Object意味着排序基于[version]脚本块返回的实例,针对每个输入文件名进行评估.
[1] PSv5.1引入了一种[System.Management.Automation.SemanticVersion]基于语义版本控制的相关类型,但这种类型在这里不起作用,因为它只支持3个版本号组件.
| 归档时间: |
|
| 查看次数: |
359 次 |
| 最近记录: |