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