«Select -skip» не пропускает самую первую строку - PullRequest
0 голосов
/ 18 марта 2019

Мне нужно пропустить первые 4 строки csv, потому что строка 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.....

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Учитывая ваш случай (что немного странно), вы можете сделать следующее:

$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 голосов
/ 18 марта 2019

Import-Csv ожидает, что первая строка будет заголовком.Используйте Get-Content вместо.

$ImportedCSV = Get-Content "$($importPath)\$($name.name)" -Delimiter ';' | Select -skip 4
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...