Original geschrieben von DaRake
Hallo,
ich habe mal versucht, eine bat umsetzen, die mein Problem löst. Ich würde mich freuen, wenn mir jemand sagt, ob sie so funktioniert, oder ob sie fehlerbehaftet ist.
Code:
echo %3 > "c:\Eigene~1\POCSAG\POC32\ort.txt"
find /c "XY" c:\Eigene~1\POCSAG\POC32\ort.txt
if exist "c:\Eigene~1\POCSAG\POC32\block.tmp" goto ende
echo temp > "c:\Eigene~1\POCSAG\POC32\block.tmp"
start "C:\Eigene~1\POCSAG\POC32\ibss.exe /U:XXXXXX /P:XXXX /E:XXXXXXXXXXX /A:Feuerwehr /T:2 /F:"c:\Eigene~1\POCSAG\POC32\Ort.txt""
del "c:\alarm\block.tmp"
exit
:ende
exit
Bezwecken soll diese bat, dass eine SMS nur dann verschickt wird, wenn der Meldungstext "XY" enthält. Ist das so richtig?
Gruß
Sebastian
Vom Ansatz her müßte es so funktionieren, aber ein Problem sehe ich in den folgenden Punkten.
Der Pfad in der Anweisung
echo temp > "c:\Eigene~1\POCSAG\POC32\block.tmp"
ist nicht identisch mit dem Pfad in der Anweisung
del "c:\alarm\block.tmp"
Die Ausgabe von Find wird nur am Bildschirm ausgegeben und der Erfolg innerhalb der BATCH-Datei über einen Errorlevel signalisiert. In der vorliegenden Form könntest Du Dir die Auswertung auch schenken.
Wenn die Datei block.tmp jeweils die gleiche sein soll, dann müssen auch die Pfadangaben die gleichen sein.
Um ein Problem von langen Pfad- und Dateinamen zu umgehen, sollten nur Datei- und Pfadnamen nach der DOS 8.3-Konvention verwendet werden, und auch ohne jegliche Sonderzeichen und deutsche Umlaute.
Unter der Annahme, daß die Datei block.tmp noch andere Funktionen hat habe ich diese Zeilen noch dringelassen und die Pfade angepasst. Da eine BATCH-Datei immer linear durchlaufen wird, Ausnahme GOTO verzweigt zum angegebenen LABEL (mit : eingeleitet), wird der Befehl EXIT vor dem LABEL :ende nicht benötigt. Unter den vorgenannten Angaben müßte die BATCH-Datei so lauten:
Code:
echo %3 > "c:\Eigene~1\POCSAG\POC32\ort.txt"
find /c "XY" c:\Eigene~1\POCSAG\POC32\ort.txt
IF ERRORLEVEL==1 GOTO ENDE
if exist "c:\Eigene~1\POCSAG\POC32\block.tmp" goto ende
echo temp > "c:\Eigene~1\POCSAG\POC32\block.tmp"
start "C:\Eigene~1\POCSAG\POC32\ibss.exe /U:XXXXXX /P:XXXX /E:XXXXXXXXXXX /A:Feuerwehr /T:2 /F:"c:\Eigene~1\POCSAG\POC32\Ort.txt""
del "c:\Eigene~1\POCSAG\POC32\block.tmp"
:ende
exit
Unter den Annahme, daß die Datei block.tmp nur dazu dient, bei gefundener Zeichenfolge den Befehl start ... auszuführen, könnte die BATCH-Datei auf folgende Befehle reduziert werden:
Code:
echo %3 > "c:\Eigene~1\POCSAG\POC32\ort.txt"
find /c "XY" c:\Eigene~1\POCSAG\POC32\ort.txt
IF ERRORLEVEL==1 GOTO ENDE
start "C:\Eigene~1\POCSAG\POC32\ibss.exe /U:XXXXXX /P:XXXX /E:XXXXXXXXXXX /A:Feuerwehr /T:2 /F:"c:\Eigene~1\POCSAG\POC32\Ort.txt""
:ende
exit
Für eine hundertprozentige Funktionalität kann ich aber keine Gewähr übernehmen, da ich den Befehl start ... nicht testen kann.