Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

CSV mit cmd auslesen

Frage Entwicklung Batch & Shell

Mitglied: GhostScripter

GhostScripter (Level 1) - Jetzt verbinden

28.08.2008, aktualisiert 18.10.2012, 8563 Aufrufe, 2 Kommentare

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:

01.
for /F "delims=,. tokens=1,15" %%i in (%qfile%) do @( 
02.
  IF %%i==$GPRMC ( 
03.
    set datum=%%j 
04.
    goto weiter 
05.
06.
07.
:weiter
Und hier die interessierenden Sätze aus der NMEA Datei:
01.
$GPRMC,083342.622,V,,,,,,,050506,,*21 
02.
$GPRMC,083433.240,V,,,,,,,050506,,*20 
03.
$GPRMC,083434.240,V,,,,,,,050506,,*27 
04.
$GPRMC,083435.241,A,5724.0815,N,00529.2716,W,0.00,327.66,050506,,*1B 
05.
$GPRMC,083436.241,A,5724.0815,N,00529.2716,W,0.00,,050506,,*00 
06.
$GPRMC,083437.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*09 
07.
$GPRMC,083438.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*06 
08.
$GPRMC,083439.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*07 
09.
$GPRMC,083440.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*09 
10.
$GPRMC,083441.241,A,5724.0823,N,00529.2728,W,0.00,,050506,,*08 
11.
$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...
Mitglied: bastla
29.08.2008, aktualisiert 18.10.2012
Hallo GhostScripter und willkommen im Forum!

Ein verwandte Problemstellung hatten wir neulich hier - darauf aufbauend sollte etwa folgender Ansatz funktionieren:
01.
for /F "delims=" %%i in ('findstr /b /c:"$GPRMC" "%qfile%"') do set "Zeile=%%i" & call :ProcessLine 
02.
goto :eof 
03.
 
04.
:ProcessLine 
05.
set "Zeile=%Zeile:,,=,_,%" 
06.
set "Zeile=%Zeile:,,=,_,%" 
07.
for /f "tokens=10 delims=," %%a in ("%Zeile:,,=,_,%,") do set "datum=%%a" 
08.
echo %datum%
Grüße
bastla
Bitte warten ..
Mitglied: GhostScripter
29.08.2008 um 07:21 Uhr
Super, das ist es!

ich gebe zu, das mit dem Ersetzen hatte ich vorher noch nicht geschnallt. Genau das löst das Problem.


Beste Grüße
GhostScripter
Bitte warten ..
Ähnliche Inhalte
VB for Applications
gelöst Bestimmte Spalten aus CSV-Datei auslesen (VBS) (9)

Frage von Gurkenhobel zum Thema VB for Applications ...

Batch & Shell
gelöst Alle Wlan Profile mit Passwörtern über CMD auslesen (11)

Frage von Luuke257 zum Thema Batch & Shell ...

Windows Userverwaltung
gelöst Gruppenmitgliedschaft einer AD Gruppe per cmd auslesen (2)

Frage von RamboJay zum Thema Windows Userverwaltung ...

Batch & Shell
gelöst Auslesen und Vergleichen Zweiter CSV Dateien Powershell (7)

Frage von Hainoon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Sicherheits-Tools

Sicherheitstest von Passwörtern für ganze DB-Tabellen

Tipp von gdconsult zum Thema Sicherheits-Tools ...

Peripheriegeräte

Was beachten bei der Wahl einer USV Anlage im Serverschrank

(6)

Tipp von zetboxit zum Thema Peripheriegeräte ...

Windows 10

Das Windows 10 Creators Update ist auf dem Weg

(6)

Anleitung von BassFishFox zum Thema Windows 10 ...

Administrator.de Feedback

Tipp: Ungelöste Fragen ohne Antwort in Tickeransicht farblich hinterlegen

Tipp von pattern zum Thema Administrator.de Feedback ...

Heiß diskutierte Inhalte
Windows Server
gelöst Update BackupExec 2015 auf 2016 führt zu SQL-Server Problem (16)

Frage von montylein1981 zum Thema Windows Server ...

Batch & Shell
gelöst Batch um Benutzer aus Sitzung abzumelden (15)

Frage von zeroblue2005 zum Thema Batch & Shell ...

Linux
gelöst Google Chrome startet nicht (12)

Frage von Thomas91 zum Thema Linux ...