Windows Batchdatei -> Comport ermitteln

S

Sebastian55129

Gast
Hallo,

ich habe ein Problem.
Ich möchte mittels einer Batchdatei einen GPS-Logger auslesen. Die Batchdatei spricht das Programm GPSBabel an.
Das Ganze hat soweit auch geklappt. Nun haben wir neue GPS-Logger bekommen, die sind von einem anderen Hersteller wie de alten.
Ich habe in der Datei alles hinbekommen, was zum Auslesen benötigt wird, meine Datei wird geschrieben, etc.
Aber nun das Problem: die alten GPS-Logger belegten immer denselben virtuellen Com Port (Die Logger sind über USB an den PC angeschlossen). Die neuen Logger haben aber immer einen anderen Port (es sind 9 Stück).
Nun möchte ich die Batchdatei entsprechend anpassen, dass mir der belegte Port als Variable ausgegeben wird bzw. automatisch in den eigentlichen Auslesebefehl eingefügt wird.

Kann mir wer einen Tip geben?

Ich habe das hier gefunden, aber es klappt irgendwie nicht:
https://www.computerbase.de/forum/threads/serielle-schnittstelle-via-batch-datei-pruefen.1917734/


vielen Dank
 

Anhänge

  • Renkforce.bat.txt
    2,6 KB · Aufrufe: 158
Bitte dein erstelltes Script hier direkt in die entsprechenden Tags posten
Code:
 ....
.
 
  • Gefällt mir
Reaktionen: Hayda Ministral
Code:
@echo off

set programm="c:\Program Files (x86)\GPSBabel\gpsbabel.exe"
set holuxdownload="c:\HoluxDownload"
set com="com8:"
set user="RHS"



echo Die ausgelesene Datei tracker-n.gpx liegt nach dem Auslesen
echo im Ordner   %holuxdownload%
echo Die alte Datei tracker-n.gpx wird als tracker-n-alt.gpx gesichert
echo.
echo Das Renkforce wird nach dem Auslesen automatisch geloescht und kann direkt
echo fuer die naechste Suche verwendet werden!
echo.

set /p nummer=Welches Renkforce ist angeschlossen (1-9)? :

if /i "%nummer%" == "1" goto OK
if /i "%nummer%" == "2" goto OK
if /i "%nummer%" == "3" goto OK
if /i "%nummer%" == "4" goto OK
if /i "%nummer%" == "5" goto OK
if /i "%nummer%" == "6" goto OK
if /i "%nummer%" == "7" goto OK
if /i "%nummer%" == "8" goto OK
if /i "%nummer%" == "9" goto OK

echo.
echo Falsche Auswahl!
goto ENDE0

:OK

set /p auswahl=Starten (J/N)? :

if /i not "%auswahl%"=="J" goto ENDE0

if exist c:\Users\%user%\AppData\Local\Temp\data.bin (
 del c:\Users\%user%\AppData\Local\Temp\data.bin
)
if exist %holuxdownload%\data.bin (
 del %holuxdownload%\data.bin
)

if exist "%holuxdownload%\tracker-%nummer%.gpx" (
  echo Sicherungsdatei tracker-%nummer%.alt.gpx wird erstellt ...
  copy %holuxdownload%\tracker-%nummer%.gpx %holuxdownload%\tracker-%nummer%.alt.gpx
)

echo Tracker auslesen, Datei tracker-%nummer%.gpx wird erstellt...

%programm% -D0 -t -i skytraq,erase=1 -f %com% -o gpx -F %holuxdownload%\tracker-%nummer%.gpx

echo Tracker erfolgreich ausgelesen!

:ENDE0
echo.
set /p eingabe=Enter
:ENDE
 
Würde den Befehl ganz blöd in eine while Do Schleife packen und die ports hochzählen lassen.
Wenn es dann noch error Level gibt um so besser.
 
Hiermit kannst du dir zumindest die Liste der verfügbaren COM-Ports ausgeben lassen:

wmic path Win32_SerialPort

Mit Glück kannst du den Output parsen und nach Schlüsselbegriffen suchen, die den richtigen COM-Port für den GPS-Logger identifizieren.

Sollten die USB-Logger dort nicht auftauchen, hilft eventuell dieser Befehl:

wmic path Win32_PnPEntity


Generell muss man aber sagen, dass Batch wirklich das schlechteste aller Werkzeuge ist, um sowas zu machen: Batch is a Bitch und das ist ernstgemeint. PowerShell ist besser geeignet, je nach KnowHow gar eine Programmiersprache wie python, C#, o.ä.
 
  • Gefällt mir
Reaktionen: derlorenz und Bitopium
Zurück
Oben