You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用PowerShell统计并排序文件中焦距数据的出现次数?

PowerShell统计焦距出现次数的最简实现

首先修正你原代码的问题:当前循环里每次都会用新值覆盖$data,导致最后只保留最后一个文件的焦距数据。需要先把所有文件的焦距收集到数组里,再做统计。

最简实现代码如下:

# 收集所有焦距数据
$focalLengths = foreach ($file in $files) {
    Get-FocalLength $file
}

# 分组统计次数,按次数降序排序后输出指定格式
$focalLengths | Group-Object | Sort-Object Count -Descending | ForEach-Object {
    "$($_.Name) : $($_.Count)"
}

代码说明:

  • 用foreach循环收集所有Get-FocalLength的返回值到数组$focalLengths中,避免数据被覆盖。
  • Group-Object会自动按相同值分组,每个分组对象包含Name(分组的焦距值)和Count(出现次数)。
  • Sort-Object Count -Descending按出现次数从多到少排序;如果需要按焦距数值排序,可以改成Sort-Object { [int]$_.Name.Split(' ')[0] }。
  • 最后通过ForEach-Object格式化输出成你需要的值 : 次数格式。

如果想更简洁,甚至可以把收集和统计合并成一行:

$files | ForEach-Object { Get-FocalLength $_ } | Group-Object | Sort-Object Count -Descending | ForEach-Object { "$($_.Name) : $($_.Count)" }

内容的提问来源于stack exchange,提问作者Kawaii-Hachii

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 06:26:01