我需要跳过csv的前4行,因为第5行包含标题:
1 Assetliste;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
2 Firma: Ospelt Gruppe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
3 Abrufdatum: 19.02.2018 23:06;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
4 User:;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
5 Header1; Header2 and so on.....
我使用以下PowerShell代码以我需要的格式导入和导出文件
$ImportedCSV = Import-CSV "$($importPath)\$($name.name)" -Delimiter ';' | Select -skip 4
$ImportedCSV | ConvertTo-Csv -NoTypeInformation | % {$_ -replace '"', ""} | Out-File ("$($importPath)\$($name.name)")
但是它不会跳过第一行,从而导致以下输出:
1 Assetliste
2 Develop
3 Develop
4 Kyocera
5 Kyocera
如果我手动删除这4行而不使用“选择跳过”,则我的脚本将按计划工作:
1 Marke,Modell,ArtikelNr, ...
2 Develop,ineo+ 308,A7PY121, ...
3 Develop,ineo 284e,A61G121, ...
4 Kyocera,FS-4200DN,FS-4200DN, ...
5 and so on.....
答案 0 :(得分:1)
鉴于您的情况(有点奇怪),您可以执行以下操作:
$csv = Get-Content -Path "$importpath\$($name.name)" | Select-Object -Skip 4
$csv = $csv | ConvertTo-Csv -Delimiter ';' -NoTypeInformation
$csv | Export-Csv -Path "$importpath\$($name.name)" -NoTypeInformation -Force
您必须在发生转换之前 删除有问题的行。
答案 1 :(得分:0)
Import-Csv
期望第一行是标题。请改用Get-Content
。
$ImportedCSV = Get-Content "$($importPath)\$($name.name)" -Delimiter ';' | Select -skip 4