其中一列标题相同
这意味着每个 CSV 都有两列标题“URL”? Import-Csv
创建对象,其中每个标题都成为属性名称,例如 @{Id=10; Url='example.com'}
,再次使用相同的名称就会发生冲突。
如果您不更改 csv 文件,这将无法干净地工作,因为仅使用 Import-Csv cmdlet 无法说“使用不同的列名”以及“跳过标题行”。
我能想到的最简单的改变就是删除每个标题行,例如:
$CsvFiles = 'out_1_result.csv','out_2_result.csv','out_3_result.csv','out_4_result.csv','out_5_result.csv','out_6_result.csv','out_7_result.csv','out_8_result.csv','out_9_result.csv','out_10_result.csv','out_11_result.csv','out_12_result.csv','out_13_result.csv','out_14_result.csv','out_15_result.csv','out_16_result.csv','out_17_result.csv','out_18_result.csv','out_19_result.csv','out_20_result.csv','out_21_result.csv','out_22_result.csv','out_23_result.csv','out_24_result.csv','out_25_result.csv','out_26_result.csv','out_27_result.csv','out_28_result.csv'
$NewFileNames = $CsvFiles | ForEach-Object {
$NewFileName = $_ + "_noheader.csv"
Get-Content $_ | Select-Object -Skip 1 | Set-Content $NewFileName -Encoding UTF8
$NewFileName # write new name to output stream
}
然后,当它们没有标题行时,将它们全部导入并将标题行指定为参数
Import-Csv -Path $NewFileNames -Header 'Col1', 'Col2', 'Url1', 'Url2' | Export-Csv ...