pxprof
Goto Top

Koordinaten mittels Batchdatei aus .txt Datei exportieren

Hallo,
in unserer Feuerwehr bekommen wir bei einer Alarmierung auch immer eine E-Mail die auf unserem Server Empfangen wird und wodurch auch die PC's in der Einsatzzentrale gestartet werden.
Jetzt will ich das ganze erweitern. Eine Zeile innerhalb der E-Mail enthält die Koordinaten der Einsatzstelle:
Koordinaten: POINT(1.23456 12.3456789)
Diese Zeile ist innerhalb einer Datei des E-Mail Programms auf das ich zugreifen kann. Da es immer um die aktuelle Alarmierung geht, dreht es sich um das letzte vorkommen dieser Zeile.
Diese beiden Werte sollen Extrahiert werden und in einer extra .txt Datei bereitgestellt werden. Eine andere Bat-Datei die im Autostart einer der PC's in der Einsatzzentrale liegt, soll dann Firefox mit der URL auf maps.google öffnen, so das die Feuerwehrleute beim eintreffen in der Einsatzzentrale direkt auf dem Bildschirm sehen können wo der Einsatz ist. Der Befehl um maps in Firefox mit einer bestimmten Koordinate zu öffnen ist:
"C:\Program Files (x86)\Mozilla Firefox\firefox.exe" https://www.google.de/maps/@1.23456,12.3456789,14z
Danke schon mal im voraus an alle die sich Gedanken machen werden^^

Content-Key: 239373

Url: https://administrator.de/contentid/239373

Printed on: April 26, 2024 at 17:04 o'clock

Member: Xaero1982
Xaero1982 May 28, 2014 at 07:13:29 (UTC)
Goto Top
Moin,

hast du dir denn schon mal Gedanken gemacht wie man das umsetzen kann?

Verstehe mich nicht falsch, aber für "neue" ist das immer etwas schwerer hier face-smile Die meisten kommen ins Forum, stellen eine Frage und waren nicht mehr gesehen.
Gib uns einen Ansatz und wir helfen dir beim Umsetzen.

Gruß
Member: PXProf
PXProf May 28, 2014 at 14:52:38 (UTC)
Goto Top
Also bis jetzt habe ich Folgendes:
Die Mail kommen in Thunderbird an, eine Interne Filterregel in Thunderbird verschiebt die Mails von der Leitstelle in einen Lokalen Ordner. Das Thunderbird Addon Mailbox-Alert erkennt das eintreffen neuer Mails und Startet daraufhin eine Batch-Datei die mittels WOL-Anweisung die 4 PC's in der Einsatzzentrale startet, des Weiteren legt sie auf einem Netzlaufwerk (USB-Stick in der Fritz.Box) 4 Dateien an. Im Autostartordner der einzelnen PC's in der Einsatzzentrale liegen jeweils auch eine Batch-Datei die beim Start überprüft ob die jeweilig dem PC zugeordnete Datei auf dem Netzlaufwerk liegt. Daran erkennt das Programm ob der PC Manuell oder in Folge eines Alarms hochgefahren wurde. Sind die Dateien vorhanden öffnet jeder Rechner ein voreingestelltes Programm. Thunderbird, Einsatzprotokoll, Einsatzpläne und Maps.
Das ist soweit der Stand der dinge wie es momentan funktioniert.
Sogar auf die Mails von Thunderbird kann ich mittels Batch-Datei zugreifen und habe es auch geschafft den String "Koordinaten: POINT(1.23456 12.3456789)" zu Extrahieren. Leider kenne ich mich mit Stringmanipulation auf Batch-Ebene nicht gut genug aus um diese zwei Werte separat heraus zu bekommen, vor allem da die Zahlen ja auch unterschiedlich lang sind und obwohl immer nur die letzte Mail im Thunderbird-Ordner verbleibt, sind in der Datei die diesen Ordner Repräsentiert mehrere Mails drin. Aber wie gesagt, die Relevanten Koordinaten sind die des letzten Auftretens.
Member: Xaero1982
Xaero1982 May 28, 2014 at 15:01:32 (UTC)
Goto Top
Schön, dann hast du ja sicher schon mal den String:

"Koordinaten: POINT(1.23456 12.3456789)" in einer Variable gespeichert, richtig?

Nennen wir sie einfach %var1%
Nun erstellen wir eine neue Variable mit dem was wir brauchen:

 set var2=%var1:~19,-1%
Da ich davon ausgehe, dass der Inhalt "Koordinaten: POINT(" immer identisch ist trenne ich mit ~19 die ersten 19 Zeichen ab (wenn ich mich nicht verzählt habe). mit -1 trennen wir die ")" ab.

Dann ist die neue Variable: %var2%=1.23456 12.3456789

Nun müssen wir die noch zerlegen:
for /f "tokens=1* delims= " %%a in ("%var2%") do echo Variable1: %%a  Variable2: %%b  

Der Bastla oder so haben da sicher eine einfachere elegantere Möglichkeit face-smile

Gruß
Member: bastla
bastla May 28, 2014 at 17:24:35 (UTC)
Goto Top
Hallo PXProf und willkommen im Forum, hallo Xaero1982!

Unter der Annahme, dass der Batch mit Übergabe der Maildatei als Parameter aufgerufen wird und der letzte Teil der URL (",14z") konstant ist, sollte eigentlich
for /f "tokens=3,4 delims=() " %%a in ('findstr "POINT" %1') do "C:\Program Files (x86)\Mozilla Firefox\firefox.exe" https://www.google.de/maps/@%%a,%%b,14z
genügen ...

Grüße
bastla
Member: Xaero1982
Xaero1982 May 28, 2014 at 18:50:06 (UTC)
Goto Top
Hallo Bastla,

sollte dann nicht das:

for /f "tokens=3,4 delims=() " %%a in ('findstr "POINT" Test.txt') do echo Variable1: %%a  Variable2: %%b  

unter der Annahme, dass in der letzten Zeile POINT(1.23456 12.3456789) steht nicht

Variable1: 1.23456 
Variable2: 12.3456789
ausgeben?

Bei mir kommt aber:

Variable1: 12.3456789
Variable2: 
heraus.

Gruß
Member: bastla
bastla May 28, 2014 at 18:54:10 (UTC)
Goto Top
Hallo Xaero1982!

Ich bin von einer Zeile
Koordinaten: POINT(1.23456 12.3456789)
ausgegangen - falls es nur
POINT(1.23456 12.3456789)
hieße, wären die Tokens 2 und 3 zu verwenden ...

Grüße
bastla
Member: Xaero1982
Xaero1982 May 28, 2014 at 18:55:27 (UTC)
Goto Top
Jau, habs gerade entdeckt face-smile

Danke für die Aufklärung.

Gruß
Member: Xaero1982
Xaero1982 Jun 02, 2014 at 15:27:54 (UTC)
Goto Top
Ist das eigentlich erledigt?
Member: PXProf
PXProf Jun 07, 2014 updated at 19:18:22 (UTC)
Goto Top
Nein leider nicht.
Sry das ich mich erst jetzt wieder melde.
Momentan habe ich ein problem am anderen Ende.
Die Datei, die mir die Zeile mit den Koordinaten aus der E-Mail Datei exportieren sollte.
Sie sieht so aus:

@echo off & SetLocal EnableDelayedExpansion
for /f %%i in (Z:\JS\Alarm) do (
set "zeile=%%i"
set "vergl=%zeile:~0,12%"
if "!vergl!"=="Koordinaten:" set"erg=%%i"
)
echo %%erg>>ausgabe.txt

Allerdings steht in der ausgabe.txt momentan nur
%erg
Könnt ihr mir dabei auch noch helfen?

PS: Des Weiteren wird die Datei im Zielrechner nicht mittels Parameter übergeben.
Eine Start.bat Datei liegt im Autostart-Ordner des PC's. Wie müsste man obiges Beispiel abändern damit es mit einem festen Pfad zur Datei Arbeitet anstatt mittels Parameterübergabe?
Member: Xaero1982
Xaero1982 Jun 07, 2014 updated at 21:05:47 (UTC)
Goto Top
Hi,

verstehe ich nicht,
Mit dem Code von mir oben oder dem von Bastler musst du nichts extrahieren.
Da nimmst du einfach die Datei wo dir Zeile und alles andere drin steht. - sprich die mail und lässt dort den Code drüber laufen.

Er sucht das Wort Point und gibt dann die beiden Werte aus...und ruft im Falle vom Script von bastla den ff auf...

Gruß
ps: im script von bastla das %1 durch den Namen inkl. Pfad ändern.
Member: bastla
bastla Jun 07, 2014 at 21:06:59 (UTC)
Goto Top
Hallo PXProf!

Abgesehen davon, dass bei "gewöhnlichen" Variablen (wie %erg%) die Prozentzeichen vor und nach dem Variablennamen stehen, sollte ein einfaches
findstr /b "Koordinaten:">>ausgabe.txt
schon genügen - wobei ja oben nicht wirklich anders vorgegangen wird, nur eben mit dem Suchbegriff "POINT" ...
Wie müsste man obiges Beispiel abändern damit es mit einem festen Pfad zur Datei Arbeitet anstatt mittels Parameterübergabe?
Den Parameter (%1) durch den festen Pfad ersetzen?

Grüße
bastla

P.S.: Batches lassen sich leichter lesen und referenzieren, wenn sie passend formatiert sind (lässt sich auch nachträglich noch hinzufügen) ...