CSV Datensätze anpassen mit Powershell
Hallo Liebe Community,
aus gegebenen Anlass muss ich nun ein Script erstellen, welches die Werte meiner CSV Datei anpasst.
Ich müsste das als Powershellscript lösen und später werde ich das einfach in der Aufgabenplanung als Aufgabe (periodisch) ausführen.
Die Daten in der CSV kommen aus einer Quelle, auf die ich leider keinen Zugriff habe entsprechend bleibt mir nur die Möglichkeit diese CSV zu importieren / bearbeiten und an einem anderen Pfad abzulegen. Dort wird sie von einer anderen Software verarbeitet.
beispielhafte Struktur CSV:
ID;NUMMER;Sacharbeiter;DienstleistungsNr;Datum;Start;Ende
ZS09999;32777;MM;1001;01.07.2020;14:08;17:29
So ungefair könnt ihr euch die CSV vorstellen. Was ich nun machen muss ist die Spalte NUMMER wie folgt abzuändern.
Jeder Wert in NUMMER soll mit 32.000 Subtrahiert werden.
Bei der Nummer handelt es sich um eine Fortlaufende Nummer wenn wir da die 32000 Subtrahieren können wir trotzdem ohne probleme mit den Werten arbeiten
Entsprechend sollte das dann ungefair so aussehen
Vorher Nacher
32777 777
32778 778
33779 779
Das ganze scheint mir nicht ganz so trivial, daher wende ich mich mal an euch. Evtl hat da jmd erfahrungen und kann mir da weiterhelfen?
Ich danke es euch im Voraus!
Bleibt gesund
aus gegebenen Anlass muss ich nun ein Script erstellen, welches die Werte meiner CSV Datei anpasst.
Ich müsste das als Powershellscript lösen und später werde ich das einfach in der Aufgabenplanung als Aufgabe (periodisch) ausführen.
Die Daten in der CSV kommen aus einer Quelle, auf die ich leider keinen Zugriff habe entsprechend bleibt mir nur die Möglichkeit diese CSV zu importieren / bearbeiten und an einem anderen Pfad abzulegen. Dort wird sie von einer anderen Software verarbeitet.
beispielhafte Struktur CSV:
ID;NUMMER;Sacharbeiter;DienstleistungsNr;Datum;Start;Ende
ZS09999;32777;MM;1001;01.07.2020;14:08;17:29
So ungefair könnt ihr euch die CSV vorstellen. Was ich nun machen muss ist die Spalte NUMMER wie folgt abzuändern.
Jeder Wert in NUMMER soll mit 32.000 Subtrahiert werden.
Bei der Nummer handelt es sich um eine Fortlaufende Nummer wenn wir da die 32000 Subtrahieren können wir trotzdem ohne probleme mit den Werten arbeiten
Entsprechend sollte das dann ungefair so aussehen
Vorher Nacher
32777 777
32778 778
33779 779
Das ganze scheint mir nicht ganz so trivial, daher wende ich mich mal an euch. Evtl hat da jmd erfahrungen und kann mir da weiterhelfen?
Ich danke es euch im Voraus!
Bleibt gesund
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 585392
Url: https://administrator.de/forum/csv-datensaetze-anpassen-mit-powershell-585392.html
Ausgedruckt am: 11.04.2025 um 13:04 Uhr
7 Kommentare
Neuester Kommentar

(Import-CSV 'd:\data.csv' -Delimiter ";") | %{$_.NUMMER = [int]$_.NUMMER - 32000;$_} | Export-CSV 'd:\data_neu.csv' -Delimiter ";" -NoType -Encoding UTF8

Wäre es auch möglich die zweite Splate anzusteuern, wenn man in der CSV datei keinen Header hätte?
Entsprechend keine Bezeichnung der Spalten.
Kein ThemaEntsprechend keine Bezeichnung der Spalten.
(Import-CSV 'd:\data.csv' -Delimiter ";" -Header (1..8)) | %{$_.2 = [int]$_.2 - 32000;$_} | ConvertTo-CSV -Delimiter ";" | Select -Skip 1 | out-file 'd:\data_neu.csv'

1. 2. 3.
Testdatei (test.csv) Inhalt hat laut deiner Aussage keine Header:
ZS09999;32777;MM;1001;01.07.2020;14:08;17:29
ZS09999;32778;MM;1001;01.07.2020;14:08;17:29
ZS09999;32779;MM;1001;01.07.2020;14:08;17:29
ZS09999;23455;MM;1001;01.07.2020;14:08;17:29
Code darauf angewendet:
$IN = 'D:\test.csv'
$OUT = 'D:\test.txt'
((Import-CSV $IN -Delimiter ";" -Header (1..7)) | %{
if ([int]$_.2 -gt 32667){$_.2 -= 32000}
$_
} | ConvertTo-CSV -Delimiter ";" -NoType) -replace '"','' | Select -Skip 1 | out-file $OUT
Ergebnis (test.txt):
ZS09999;777;MM;1001;01.07.2020;14:08;17:29
ZS09999;778;MM;1001;01.07.2020;14:08;17:29
ZS09999;779;MM;1001;01.07.2020;14:08;17:29
ZS09999;23455;MM;1001;01.07.2020;14:08;17:29
So jetzt darfst du selbst was üben wenn du noch mehr willst: https://docs.microsoft.com/de-de/powershell/
Und wech ....