【发布时间】:2017-06-10 20:01:24
【问题描述】:
我需要在 PowerShell 中处理具有重复列标题的 csv 文件。他们有重复列的原因超出了我的范围。这就是生活。
我想使用 Import-Csv 以便我可以轻松处理数据,但由于存在重复列,我收到此错误:
Import-Csv : The member "PROC STAT" is already present.
At C:\Users\MyName\Documents\SomeFolder\testScript1.ps1:10 char:9
+ $csv2 = Import-Csv $files[0].FullName
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : NotSpecified: (:) [Import-Csv], ExtendedTypeSystemException
+ FullyQualifiedErrorId : AlreadyPresentPSMemberInfoInternalCollectionAdd,Microsoft.PowerShell.Commands.ImportCsvCommand
我可以通过进入每个 csv 文件并删除重复的列来手动解决问题。但这不是一个选择。它们有数百个,并且脚本需要定期运行。理想情况下,我正在寻找一种方法来以编程方式删除该列(Import-Csv 不起作用)或以编程方式更改列的名称(这样我就可以导入-Csv 并删除它)。有什么建议吗?
我的代码循环遍历所有文件:
$files = Get-ChildItem "C:\Users\MyName\Documents\SomeFolder\Data" -Filter *.csv
foreach($file in $files) {
$csv = Import-Csv $file.FullName
}
【问题讨论】:
-
提前知道表头顺序吗?
-
@MathiasR.Jessen 是的
-
我可以使用
Get-Content $file.FullName -First 1从文件中获取第一行(标题)。但我不确定如何修改/写入新文件。
标签: powershell csv