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

PowerShell脚本用Measure-Object无法求和仅输出单个数值问题

PowerShell脚本求和问题:无法计算整体总和

脚本原本要读取int格式数值,显示单个值并计算总和,但当前执行时,Measure-Object仅输出每个单独数值,无法得到所有值的总和。

原脚本代码

$path = "C:\Users\***\Desktop\Projet Script\***\stat.dat_20220901_235900"
$CharArray = Get-Content -Path $path 
$CharArray = $CharArray.Split(".")
$a = $($CharArray)

$Value = "****"

foreach ($c in $a) {
    if ($c -match $Value) {
        $d = $c.Split(",")
        $e = $d[6]
        $e = $e.replace('"', '')
        [int32[]]$f = $e
        $g = ($f | Measure-Object -Sum).Sum 
        $g
    }
}

当前输出

20567310
4703774
14998840
3068932
22083
672967
309701
7549299

目标文件内容示例

"1","O","I","220831 235847","E","0","219413795","az","aaaa","az","p:\logiciels\az\az\run_time\tmp\","F2461724". "1","I","R","220831 235903","E","0","87958407","PHSE","BIA_PROD2","az","p:\logiciels\axway\gateway\run_time\tmp","F2461728". "1","O","I","220831 235859","E","0","157494179","az","az","az","p:\logiciels\az\az\run_time\tmp\","F2461726". "1","O","I","220831 235905","E","0","87958407","PHSE","az","**","p:\logiciels\az\az\run_time\tmp\","F2461728"

解决方案

问题根源是原脚本在循环内对单个值执行求和(结果就是值本身),没有收集所有值再统一计算总和。修改后的脚本会先收集所有符合条件的数值,最后输出总和:

$path = "C:\Users\***\Desktop\Projet Script\***\stat.dat_20220901_235900"
$CharArray = Get-Content -Path $path 
$CharArray = $CharArray.Split(".")
$a = $CharArray

$Value = "****"
# 初始化数组存储所有符合条件的数值
$allValues = @()

foreach ($c in $a) {
    if ($c -match $Value) {
        $d = $c.Split(",")
        $e = $d[6]
        $e = $e.replace('"', '')
        # 安全转换为int32,避免转换失败报错
        if ([int32]::TryParse($e, [ref]$parsedNum)) {
            $allValues += $parsedNum
            # 输出单个数值
            $parsedNum
        }
    }
}

# 计算并输出所有数值的总和
Write-Host "`n所有数值总和: " ($allValues | Measure-Object -Sum).Sum

关键修改点

  1. 新增$allValues数组,用于收集所有提取到的有效int数值
  2. 使用[int32]::TryParse做类型转换,避免因无效值导致脚本中断
  3. 循环内输出单个值,最后统一计算并输出整体总和

内容的提问来源于stack exchange,提问作者oussama_tr

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 02:55:16