使用Powershell对CSV目录中具有标题的列求和

使用Powershell对CSV目录中具有标题的列求和,powershell,csv,Powershell,Csv,我在一个目录中有一批.csv文件,每个目录中都有一列需要求和的值。.csv文件都有相同的标题,如ID、大小、文件路径等,“大小”是我需要求和的列。我找到了一个方便的一行程序来逐个执行(如下所示),但当我尝试使用通配符运算符在每个CSV中循环时,我不断收到以下错误消息:“度量对象:输入对象‘大小’不是数字。”命令执行时,只给出所有行的总计数,而不是总大小 一个接一个的有效版本是: Get Content“file.csv”| ConvertFrom csv | Measure Object“SIZ

我在一个目录中有一批.csv文件,每个目录中都有一列需要求和的值。.csv文件都有相同的标题,如ID、大小、文件路径等,“大小”是我需要求和的列。我找到了一个方便的一行程序来逐个执行(如下所示),但当我尝试使用通配符运算符在每个CSV中循环时,我不断收到以下错误消息:“度量对象:输入对象‘大小’不是数字。”命令执行时,只给出所有行的总计数,而不是总大小

一个接一个的有效版本是:
Get Content“file.csv”| ConvertFrom csv | Measure Object“SIZE”-Sum

我尝试过的版本是:
获取内容“\*.csv”|从csv转换|测量对象“大小”-求和

除了标题,列中的所有内容都是数字,但是如何通过名称“SIZE”指定列并忽略标题

你有什么建议吗?我每个月都要运行数百个.csv文件,所以一次就可以让它正常工作是非常理想的。

试试这个

Get-ChildItem .\*.csv |
    foreach {Import-Csv $_} |
        Measure-Object size -sum
如果你想要的只是总数

(Get-ChildItem .\*.csv |
    foreach {Import-Csv $_} |
        Measure-Object size -sum).sum


你在中间得到标题,因为<代码>获取内容对多个文件将在处理文件之前将所有文件组合起来。您可以使用

Get ChildItem
Import Csv
获得更好的体验

例如:

Get-ChildItem "*.csv" | ForEach-Object { Import-Csv -Path $_.FullName } | Measure-Object -Property Size -Sum 
$sum = Get-ChildItem .\*.csv |
    ForEach-Object {Import-Csv $_} |
        Measure-Object -Property size -sum

$sum.sum
Get-ChildItem "*.csv" | ForEach-Object { Import-Csv -Path $_.FullName } | Measure-Object -Property Size -Sum