Daten werden falsch aus csv-Datei in Powershell importiert
Hallo zusammen
Ich habe ein Script zur berechnung von Zeiten aus einer csv-Datei geschrieben. Das Script sieht folgendermassen aus:
Die importierte csv-Datei sieht so aus:
Alle x's sind irrelevante Informationen, welche ich für das Resultat und auch im Skript nicht benötige.
Mein Ziel ist es, immer die Zeitwerte von zwei Zeilen zu vergleichen, und dann die Differenz der beiden zu berechnen.
Wenn ich das nun allerdings mit meinem Skript versuche, erhalte ich folgende Fehlermeldung: Der Wert "Zeit=16:24" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."
Nach einigem überlegen ist mir dann aufgefallen wieso das ganze nicht klappt. Der importierte Datensatz wird als "Zeit=16:24" abgespeichert, womit man natürlich nicht rechnen kann.
Nun meine Frage: wie muss ich das ganze Importieren, um effektive Zeitwerte zu erhalten, mit denen ich rechnen kann?
Ich habe ein Script zur berechnung von Zeiten aus einer csv-Datei geschrieben. Das Script sieht folgendermassen aus:
clear
$table = Import-Csv -Path 'C:\Temp\Stempelungen\StempelungenJira.csv' -Delimiter ";"
$counter = 0
$tablelength = $table.count
While ($counter -lt $tablelength) {
$parts = $table[$counter] -split ';'
$name = $parts[4]
$prename = $parts[5]
$date = $parts[6]
$time = $parts[7]
$parts2 = $table[$counter + 1] -split ';'
$name2 = $parts2[4]
$prename2 = $parts2[5]
$date2 = $parts2[6]
$time2 = $parts2[7]
$calc = $time2 - $time
if ($name -eq $name2 -and $prename -eq $prename2 -and $date -eq $date2) {
write-host $name;$prename;$date;$calc;$counter
}
else{
write-host falsch $counter
$counter = $counter - 1
}
$counter = $counter + 2
}
Die importierte csv-Datei sieht so aus:
x;x;x;x;Name;Vorname;Datum;Zeit;x;x;x;x;x
x;x;x;x;Walker;John;13.01.;08:00;x;x;x;x;x
x;x;x;x;Walker;John;13.01.;11:00;x;x;x;x;x
x;x;x;x;Walker;John;13.01.;12:00;x;x;x;x;x
x;x;x;x;Walker;John;13.01.;17:00;x;x;x;x;x
x;x;x;x;Walker;John;14.01.;07:00;x;x;x;x;x
x;x;x;x;Walker;John;14.01.;12:00;x;x;x;x;x
x;x;x;x;Walker;John;14.01.;12:30;x;x;x;x;x
x;x;x;x;Walker;John;14.01.;16:00;x;x;x;x;x
Alle x's sind irrelevante Informationen, welche ich für das Resultat und auch im Skript nicht benötige.
Mein Ziel ist es, immer die Zeitwerte von zwei Zeilen zu vergleichen, und dann die Differenz der beiden zu berechnen.
Wenn ich das nun allerdings mit meinem Skript versuche, erhalte ich folgende Fehlermeldung: Der Wert "Zeit=16:24" kann nicht in den Typ "System.Int32" konvertiert werden. Fehler: "Die Eingabezeichenfolge hat das falsche Format."
Nach einigem überlegen ist mir dann aufgefallen wieso das ganze nicht klappt. Der importierte Datensatz wird als "Zeit=16:24" abgespeichert, womit man natürlich nicht rechnen kann.
Nun meine Frage: wie muss ich das ganze Importieren, um effektive Zeitwerte zu erhalten, mit denen ich rechnen kann?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 652500
Url: https://administrator.de/forum/daten-werden-falsch-aus-csv-datei-in-powershell-importiert-652500.html
Ausgedruckt am: 01.07.2025 um 16:07 Uhr
7 Kommentare
Neuester Kommentar
Das ist schonmal die richtige Stelle, allerdings müsstest du es 2 mal machen. du wandelst nur $time2 um. time fehlt noch. Das mit dem Zeit= davor habe ich überlesen.
Versuche mal folgendes:
Wenn ich dich richtige verstanden habe, funktioniert es so in meinem Test
Versuche mal folgendes:
$time2=$time2 -replace 'Zeit='
$time=$time -replace 'Zeit='
$calc = (get date $time2) - (get-date $time)
Wenn ich dich richtige verstanden habe, funktioniert es so in meinem Test