landix
Goto Top

Spalten mehrerer CSV Dateien löschen

Moin,

ich möchte aus einigen *.csv Dateien jeweils die Spalten 1,2,5,6 löschen, oder die Spalten mit dem header: secs,km,cad,alt (Die Dateien sind immer gleich.
Also Spalte 3,4 (power,hr) soll erhalten bleiben.

Bis jetzt habe ich mir sowas zusammen gesponnen:

$Arbeitspfad='Q:\OSFDL'  

ls -recurse "$Arbeitspfad\*.csv" |? {! (Import-Csv -Delimiter ',')} | select 'hr','power' | set-content $file  

Leider wehrt sich das System irgendwie: face-smile

PS C:\WINDOWS\system32> ls -recurse "$Arbeitspfad\*.csv" |? {! (Import-Csv -Delimiter ',')} | select 'hr','power' | set-content $file  
Set-Content : Das Argument kann nicht an den Parameter "Path" gebunden werden, da es NULL ist.  
In Zeile:1 Zeichen:105
+ ... Import-Csv -Delimiter ',')} | select 'hr','power' | set-content $file  
+                                                                     ~~~~~
    + CategoryInfo          : InvalidData: (:) [Set-Content], ParameterBindingValidationException
    + FullyQualifiedErrorId : ParameterArgumentValidationErrorNullNotAllowed,Microsoft.PowerShell.Commands.SetContentCommand

Watt nun?

Content-Key: 558914

Url: https://administrator.de/contentid/558914

Printed on: April 29, 2024 at 11:04 o'clock

Member: TK1987
Solution TK1987 Mar 18, 2020 updated at 13:34:10 (UTC)
Goto Top
Moin,

Zitat von @Landix:
PS C:\WINDOWS\system32> ls -recurse "$Arbeitspfad\*.csv" |? {! (Import-Csv -Delimiter ',')} | select 'hr','power' | set-content $file  
Das ? ist ein Alias für Where-Object, und dient rein dazu, irgendwelche Bedingungen zu überprüfen.

Du überprüfst da in dem Fall gerade, ob import-csv keine (da die Bedingung mit dem vorrangestellten ! negiert wurde) Ausgabe hat - was an sich schon keinen Sinn ergibt. Darüber hinaus fehlt bei import-csv auch noch die Angabe der Input-Datei.
Zudem: Wenn du mit Import-Csv Daten einliest und hinten wieder eine CSV-Datei rausbekommen willst, musst du natürlich mit Export-Csv arbeiten.

ls -recurse "$Arbeitspfad\*.csv" | % {  
  $File=Import-Csv -Delimiter ',' -Encoding Default $_ | select hr,power  
  $File|Export-csv -Delimiter ',' -Encoding Default -NoTypeInformation $_.FullName  
  }

Das % ist ein Alias für Foreach-Object.

Gruß Thomas
Member: Landix
Landix Mar 18, 2020 at 13:40:00 (UTC)
Goto Top
Super
und wieder herzlichen Dank für die Hilfe.
Ich glaube ich sollte mehr mit powershell machen, schein mega interessant zu sein