“选择-skip”不会跳过第一行

问题描述 投票:0回答:2

我需要跳过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行而不使用“select skip”,我的脚本按计划工作:

1 Marke,Modell,ArtikelNr, ...
2 Develop,ineo+ 308,A7PY121, ...
3 Develop,ineo 284e,A61G121, ...
4 Kyocera,FS-4200DN,FS-4200DN, ...
5 and so on.....
powershell csv select skip import-csv
2个回答
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

您必须在转换发生之前删除有问题的行。


0
投票

Import-Csv希望第一行成为标题。请改用Get-Content

$ImportedCSV = Get-Content "$($importPath)\$($name.name)" -Delimiter ';' | Select -skip 4
© www.soinside.com 2019 - 2024. All rights reserved.