CSV mit cmd auslesen
Hallo zusammen,
ich möchte eine CSV Datei (genauer ein NMEA Log) auslesen.
Das Problem ist, das je nach Empfang nicht alle Felder gefüllt werden sondern mehrere Kommata hintereinander stehen. Ich habe es mit einer FOR /F Schleife probiert, jedoch funktioniert das mit den "tokens=," nicht wie erwartet:
Und hier die interessierenden Sätze aus der NMEA Datei:
Ich möchte die Zahlen 050506 (Datum) auslesen. In den ersten drei Zeilen bekomme ich mit "tokens=1,5" das richtige Ergebnis, in der vierten Zeile so wie im Script angegeben und danach wieder anders.
Die FOR Schleife zählt also aufeinanderfolgende Trennzeichen als eins.
Da ich nun schon seit 3 Tagen damit kämpfe, sehe ich wahrscheinlich den Wald vor lauter Bäumen nicht. Wenn mir also jemand auf die Sprünge helfen könnte...
Versuche mit der Powershell habe ich dann nach der Erkenntniss, das da noch ne Menge zu lernen ist aufgegeben.
Ich sach schonmal Danke und bis denn...
ich möchte eine CSV Datei (genauer ein NMEA Log) auslesen.
Das Problem ist, das je nach Empfang nicht alle Felder gefüllt werden sondern mehrere Kommata hintereinander stehen. Ich habe es mit einer FOR /F Schleife probiert, jedoch funktioniert das mit den "tokens=," nicht wie erwartet:
for /F "delims=,. tokens=1,15" %%i in (%qfile%) do @(
IF %%i==$GPRMC (
set datum=%%j
goto weiter
)
)
:weiter
Und hier die interessierenden Sätze aus der NMEA Datei:
$GPRMC,083342.622,V,,,,,,,050506,,*21
$GPRMC,083433.240,V,,,,,,,050506,,*20
$GPRMC,083434.240,V,,,,,,,050506,,*27
$GPRMC,083435.241,A,5724.0815,N,00529.2716,W,0.00,327.66,050506,,*1B
$GPRMC,083436.241,A,5724.0815,N,00529.2716,W,0.00,,050506,,*00
$GPRMC,083437.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*09
$GPRMC,083438.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*06
$GPRMC,083439.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*07
$GPRMC,083440.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*09
$GPRMC,083441.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*08
$GPRMC,083442.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*0B
Ich möchte die Zahlen 050506 (Datum) auslesen. In den ersten drei Zeilen bekomme ich mit "tokens=1,5" das richtige Ergebnis, in der vierten Zeile so wie im Script angegeben und danach wieder anders.
Die FOR Schleife zählt also aufeinanderfolgende Trennzeichen als eins.
Da ich nun schon seit 3 Tagen damit kämpfe, sehe ich wahrscheinlich den Wald vor lauter Bäumen nicht. Wenn mir also jemand auf die Sprünge helfen könnte...
Versuche mit der Powershell habe ich dann nach der Erkenntniss, das da noch ne Menge zu lernen ist aufgegeben.
Ich sach schonmal Danke und bis denn...
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95588
Url: https://administrator.de/contentid/95588
Ausgedruckt am: 09.11.2024 um 01:11 Uhr
2 Kommentare
Neuester Kommentar
Hallo GhostScripter und willkommen im Forum!
Ein verwandte Problemstellung hatten wir neulich hier - darauf aufbauend sollte etwa folgender Ansatz funktionieren:
Grüße
bastla
Ein verwandte Problemstellung hatten wir neulich hier - darauf aufbauend sollte etwa folgender Ansatz funktionieren:
for /F "delims=" %%i in ('findstr /b /c:"$GPRMC" "%qfile%"') do set "Zeile=%%i" & call :ProcessLine
goto :eof
:ProcessLine
set "Zeile=%Zeile:,,=,_,%"
set "Zeile=%Zeile:,,=,_,%"
for /f "tokens=10 delims=," %%a in ("%Zeile:,,=,_,%,") do set "datum=%%a"
echo %datum%
bastla