gpt4 book ai didi

powershell - 根据文件名中间的版本号对文件进行排序

转载 作者:行者123 更新时间:2023-12-04 01:58:49 30 4
gpt4 key购买 nike

我是电源外壳的新手。我正在尝试对名称中间有版本号的文件列表进行排序。

这是文件列表:

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
..

我会请你帮我处理排序逻辑。

谢谢

最佳答案

样本输入的最简单方法如下,它假定 - 之后的第一个数字开始版本号,它以后续 - 之前的最后一位数字结束:

Get-ChildItem *.zip | Sort-Object { [version]($_.Name -replace '^[^\d]+-(.*\d)-.*', '$1') } 
  • $_.Name -replace '^[^\d]+-(.*\d)-.*', '$1'从每个文件名中提取版本号作为字符串。

  • [version]将该字符串转换为版本号对象 ( System.Version )[1],可根据版本号组件进行排序。

  • 将整个表达式作为脚本 block 传递 { ... }Sort-Object意味着排序是基于 [version]脚本 block 返回的实例,针对每个输入文件名进行评估。


[1] PSv5.1 引入了相关类型,[System.Management.Automation.SemanticVersion] , 基于 semantic versioning ,但是在这里不起作用,因为它只支持 3 版本号组件。

关于powershell - 根据文件名中间的版本号对文件进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44981723/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com