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

如何用PowerShell脚本汇总目录下文件中eggs行的数值总和?

批量提取文件中eggs行的数值并求和

直接给你能用的完整PowerShell脚本,执行后就能输出目标结果:

$total = 0
# 递归遍历当前目录下所有txt文件
Get-ChildItem -Path . -Filter "*.txt" -Recurse | ForEach-Object {
    # 读取当前文件内容,筛选出含"eggs:"的行
    Get-Content $_.FullName | Select-String "eggs:" | ForEach-Object {
        # 按冒号拆分行,提取数值部分并转成整数,累加到总和
        $value = ($_.Line -split ":")[1] -as [int]
        $total += $value
    }
}
# 输出最终结果
Write-Host "eggs = $total"

关键部分拆解(对应你找到的脚本片段解释):

  • 遍历文件:Get-ChildItem -Path . -Filter "*.txt" -Recurse 替代你原来的dir命令,它会返回带完整路径的文件对象,避免子目录文件找不到的问题。管道|把每个文件传给后面的ForEach-Object,大括号{}里就是对单个文件的处理逻辑。
  • 匹配目标行:Get-Content $_.FullName | Select-String "eggs:",Get-Content读取文件内容,Select-String精准匹配带eggs:的行(用eggs:比eggs*更稳妥,不会误匹配类似eggshell的无关内容)。
  • 提取数值:($_.Line -split ":")[1] 就是你用的-split ":"逻辑,$_.Line是Select-String匹配到的整行内容,拆分后取第二个元素就是数值,-as [int]把字符串转成整数,防止变成字符串拼接。
  • 求和输出:用$total变量累加所有数值,最后用Write-Host输出指定格式的结果。

你原有片段的问题说明:

  • dir . -filter "*.txt" -Recurse -name | foreach{(GC $_).Count} | measure-object -sum:这个是统计所有txt文件的总行数总和,和你的需求无关,我们需要的是提取特定行的数值,所以要替换成读取内容匹配目标行的逻辑。
  • Get-Content | Select-String -Pattern "eggs*":缺少指定文件路径,而且eggs*的正则表达式会匹配egg、eggs等变体,应该用eggs:精准匹配行中的标识。
  • $record -split ":":这个拆分逻辑是对的,但需要先拿到Select-String匹配到的行对象(即$_.Line),再执行拆分操作。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 17:06:55