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

如何让PowerShell的Measure-Object仅输出单列统计结果?

问题:如何输出仅包含行数的CSV文件?

我想要统计CSV文件的行数,执行了以下PowerShell代码:

$csvPath = "some.csv"
$lineCount = "linecount.csv"
Import-Csv $csvPath | Select-Object -Skip 1 | Measure-Object | Export-CSV $lineCount -NoTypeInformation

得到的linecount.csv输出如下:

"Count","Average","Sum","Maximum","Minimum","Property"
"100",,,,,

我期望的输出为:

"Count"
"100"

请问该如何实现这一需求?


解决方案

原代码中Measure-Object返回的是包含多个统计属性的对象,Export-CSV会默认导出该对象的所有属性,因此出现了多余列。要得到仅包含Count的CSV,需要仅提取Count属性并构造单一属性的对象,或直接生成符合CSV格式的文本。

方法1:提取Count属性构造对象导出

$csvPath = "some.csv"
$lineCount = "linecount.csv"
# 统计行数并封装为仅含Count属性的对象
$countObj = [PSCustomObject]@{
    Count = (Import-Csv $csvPath | Select-Object -Skip 1 | Measure-Object).Count
}
$countObj | Export-CSV $lineCount -NoTypeInformation

方法2:直接生成CSV文本写入文件

如果不需要通过对象导出,可直接拼接CSV格式文本写入,大文件场景下效率更高:

$csvPath = "some.csv"
$lineCount = "linecount.csv"
$rowCount = (Import-Csv $csvPath | Select-Object -Skip 1 | Measure-Object).Count
# 直接写入目标CSV格式内容
@"
"Count"
"$rowCount"
"@ | Out-File $lineCount -Encoding utf8

补充说明

  • Select-Object -Skip 1用于跳过CSV表头行,若需统计包含表头的总行数,移除该参数即可。
  • 方法2省略了对象转换和Export-CSV的额外处理,性能更优。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 19:07:01