Benutzer mit den meisten Antworten
CSV Datei öfnnen, ändern, speichern

Frage
-
Ich habe folgendes Anliegen, ich habe eine immer wieder kehrende Aufgabe welche ich gern automatisieren möchte.
Es gibt eine Date welche zum Beispiel "Pfusch1.csv" heißt und im Ordner C:\ErstePSErfahrung\ liegt.
Die csv Datei hat ein ; als trennzeichen und ist mit folgendem Inhalt versehen.
Spalte1;Spalte2;;;Spalte5;Spalte6;
Spalte1;Spalte2;;;Spalte5;Spalte6;
daraus möchte ich nun den Inhalt der Spalte2 löschen (aber nicht die ganze Spalte).
Spalte1;;;;Spalte5;Spalte6;
Spalte1;;;;Spalte5;Spalte6;
Im Anschluss soll die Datei wieder im Ordner C:\ErstePSErfahrung\ gespeichert werden.Ich habe folgendes bereits versucht:
$CSV = Import-CSV -Delimiter ';' -Path 'C:\ErstePSErfahrung\Pfusch1.csv' -Header (1..6) Foreach ($Line in $CSV) { $Line.2 = '' } $CSV | Export-Csv -Delimiter ';' -NoTypeInformation 'C:\ErstePSErfahrung\Pfusch1_neu.csv'
Jedoch erscheint dann folgendes: Cmdlet Export-Csv an der Befehlspipelineposition 1
Geben Sie Werte für die folgenden Parameter an:
InputObject:Wie mache ich es richtig?
Antworten
-
Hacktrist,
Hallo und Willkommen im Deutschen Microsoft Windows PowerShell Forum.
Ich hab grad keine CSV-Datei zum Testen da, aber so sollte es klappen:
$CSV = Import-CSV -Delimiter ';' -Path 'C:\ErstePSErfahrung\Pfusch1.csv' -Header (1..6) $NewCSV = Foreach ($Line in $CSV) { $Line.2 = '' $Line } $NewCSV | Export-Csv -Delimiter ';' -NoTypeInformation 'C:\ErstePSErfahrung\Pfusch1_neu.csv'
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
-
Ich habe es folgendermaßen umgesetzt bekommen:
#CSV Datei importieren $CSV = Import-CSV -Delimiter ';' -Path 'H:\Arbeitsordner\Vorbelegung.csv'-Header (1..14) #Spalte 2 leeren Foreach ($Line in $CSV) { $Line.2 = '' } #$CSV | Export-Csv -Delimiter ';' -NoTypeInformation 'C:\Arbeitsordner\Vorbelegung_neu.csv' #CSV Datei unter neuen Namen speichern $CSV | ConvertTo-Csv -NoTypeInformation -Delimiter ';' | Select -Skip 1 | Set-Content 'H:\Arbeitsordner\Vorbelegung_neu.csv'
Jetzt sind aber alle EInträge mit "" gekennzeichnet. Wie bekomme ich es hin, dass keine Gänsefüßchen eingefügt werden?
- Als Antwort markiert Hacktrist Freitag, 16. April 2021 07:02
Alle Antworten
-
Hacktrist,
Hallo und Willkommen im Deutschen Microsoft Windows PowerShell Forum.
Ich hab grad keine CSV-Datei zum Testen da, aber so sollte es klappen:
$CSV = Import-CSV -Delimiter ';' -Path 'C:\ErstePSErfahrung\Pfusch1.csv' -Header (1..6) $NewCSV = Foreach ($Line in $CSV) { $Line.2 = '' $Line } $NewCSV | Export-Csv -Delimiter ';' -NoTypeInformation 'C:\ErstePSErfahrung\Pfusch1_neu.csv'
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
-
Ich habe es folgendermaßen umgesetzt bekommen:
#CSV Datei importieren $CSV = Import-CSV -Delimiter ';' -Path 'H:\Arbeitsordner\Vorbelegung.csv'-Header (1..14) #Spalte 2 leeren Foreach ($Line in $CSV) { $Line.2 = '' } #$CSV | Export-Csv -Delimiter ';' -NoTypeInformation 'C:\Arbeitsordner\Vorbelegung_neu.csv' #CSV Datei unter neuen Namen speichern $CSV | ConvertTo-Csv -NoTypeInformation -Delimiter ';' | Select -Skip 1 | Set-Content 'H:\Arbeitsordner\Vorbelegung_neu.csv'
Jetzt sind aber alle EInträge mit "" gekennzeichnet. Wie bekomme ich es hin, dass keine Gänsefüßchen eingefügt werden?
- Als Antwort markiert Hacktrist Freitag, 16. April 2021 07:02
-
Jetzt sind aber alle EInträge mit "" gekennzeichnet. Wie bekomme ich es hin, dass keine Gänsefüßchen eingefügt werden?
Die Gänsefüßchen gehören zum Standard. Kein Tool oder Programm, welches mit standard-konformen CSV-Dateien umgehen kann, sollte damit ein Problem haben. Das siehst Du auch schon bei PowerShell. Nach dem Import der CSV-Daten werden sie auf der Konsole nicht angezeigt.
Wenn es trotzdem unbedingt sein soll, kannst Du PowerShell 7 benutzen. Mit dieser Version von Export-Csv hast ein wenig mehr Kontrolle über den Output.
Eine weitere Möglichkeit, eine einzelne Spalte herauszufiltern wäre übrigens sowas hier:
$CSV = Import-CSV -Delimiter ';' -Path 'H:\Arbeitsordner\Vorbelegung.csv'-Header (1..14) | Select-Object -ExcludeProperty 2 | Export-Csv -Path 'H:\Arbeitsordner\Vorbelegung_neu.csv' -NoTypeInformation
Noch eine Kleinigkeit: Bitte den Code nicht überkommentieren! Jeder der ansatzweise PowerShell kann, weiß, dass mit einer Zeile die das cmdlet Import-Csv enthält, eine CSV-Datei importiert wird. Das muss nicht nochmal explizit als Kommentar erklärt werden. Und aus Höflichkeit gegenüber den Menschen, die den eigenen Code ansehen sollen, sollte man auch auskommentierte Code-Zeilen besser entfernen. ;-)
Danke.
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''
- Bearbeitet BOfH-666 Freitag, 16. April 2021 06:54
-
übrigens geht es wohl doch die Gänsefüßchen zu entfernen. Mit Regex.
Ich habe nicht gesagt, dass es nicht geht. Ich habe nur gesagt, dass es nicht nötig sein sollte. Und wie oben schon geschrieben, kann die Version in PowerShell 7 das auch direkt "Out of the Box". ;-)
Ich werde diese aber zukünftig entfernen.
Das ist nett von Dir. Vielen Dank.
Live long and prosper!
(79,108,97,102|%{[char]$_})-join''