Batchabfrage ob eine Batch bereits läuft Wenn nicht dann STARTEN
Hi,
ich habe eine Batchdatei die Permanent laufen muss. Leider tut sie das nicht sondern beendet sich einfach von alleine. Das möchte ich mit einer weiteren Batch absichern.
Spricht: Eine Batch schreiben die permanent abfragt ob die andere Batch noch läuft - Wenn nicht dann soll sie neu gestartet werden.
Habs mal so versucht aber irgendwie ist da nen Bug drinne (am Beispiel Taschenrechner):
@echo off
if errorlevel 1 goto error
goto ende
:error
echo Der Taschenrechner lauft bereits.
:ende
pause
Kann mir da jemand helfen?
Gruß
Backfight
ich habe eine Batchdatei die Permanent laufen muss. Leider tut sie das nicht sondern beendet sich einfach von alleine. Das möchte ich mit einer weiteren Batch absichern.
Spricht: Eine Batch schreiben die permanent abfragt ob die andere Batch noch läuft - Wenn nicht dann soll sie neu gestartet werden.
Habs mal so versucht aber irgendwie ist da nen Bug drinne (am Beispiel Taschenrechner):
@echo off
goto ende
:error
echo Der Taschenrechner lauft bereits.
:ende
pause
Kann mir da jemand helfen?
Gruß
Backfight
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 54809
Url: https://administrator.de/contentid/54809
Ausgedruckt am: 26.11.2024 um 15:11 Uhr
16 Kommentare
Neuester Kommentar
Der Errorlevel stimmt nicht. ;)
So geht's:
@echo off
qprocess > find calc.exe >NUL: 1>&2
if errorlevel 1 goto :starten
echo Der Taschenrechner laeuft bereits
goto ende
:starten
echo Der Taschenrechner wird gestartet.
start calc.exe
:ende
pause
oder so:
So geht's:
@echo off
qprocess > find calc.exe >NUL: 1>&2
if errorlevel 1 goto :starten
echo Der Taschenrechner laeuft bereits
goto ende
:starten
echo Der Taschenrechner wird gestartet.
start calc.exe
:ende
pause
oder so:
(qprocess > find calc.exe >NUL) || Start calc.exe
qprocess.exe sollte in %windir%\system32 vorhanden sein.
mit der Datei startest du
diese calcbatch.cmd-Datei:
Beenden kannst du das Ganze durch Schließen der Batch.
Die Sache hat natürlich einen Haken: CMD.EXE ist ständig im Hintergrund aktiv.
mit der Datei startest du
start /MIN calcbatch.cmd
diese calcbatch.cmd-Datei:
@echo off
:loop
(qprocess > find calc.exe >NUL) ||cls & calc.exe
goto loop
Beenden kannst du das Ganze durch Schließen der Batch.
Die Sache hat natürlich einen Haken: CMD.EXE ist ständig im Hintergrund aktiv.
Na ja,
kleinere Verbesserungsvorschläge hätte ich aber noch....
Erstens nicht alle Prozesse abfragen, sondern nur den gesuchten.
Zweitens mit "|" pipen statt mit ">" eine Datei "Find" erzeugen.
Selbst mit richtigem Pipe-Symbol geht der Plan dann erstmal schief...
Denn "calc.exe" wird auf jeden Fall gefunden, da die Fehlermeldung von qprocess so aussieht:
"Für calc.exe ist kein Prozess vorhanden"
Also kommt hier neimals der Nicht-gefunden-Fall vor [Test am CMD-Prompt]:
Wenn überhaupt, dann könnte der Schnipsel so aussehen:
Gruss
Biber
kleinere Verbesserungsvorschläge hätte ich aber noch....
Erstens nicht alle Prozesse abfragen, sondern nur den gesuchten.
Zweitens mit "|" pipen statt mit ">" eine Datei "Find" erzeugen.
Selbst mit richtigem Pipe-Symbol geht der Plan dann erstmal schief...
Denn "calc.exe" wird auf jeden Fall gefunden, da die Fehlermeldung von qprocess so aussieht:
"Für calc.exe ist kein Prozess vorhanden"
Also kommt hier neimals der Nicht-gefunden-Fall vor [Test am CMD-Prompt]:
>qprocess calc.exe|find "calc.exe"
Für calc.exe ist kein Prozess vorhanden
Wenn überhaupt, dann könnte der Schnipsel so aussehen:
@echo off
:loop
(qprocess calc.exe 2>nul |find "calc.exe" >NUL) ||cls & calc.exe
goto loop
Gruss
Biber
1. geht der Plan nicht schief, die Batch läuft nämlich einwandfrei.
2. öffnet deine Batch bei jedem Start eine neue Instanz von calc.exe.
3. macht meine das auch.
Es ist also gemopst wie gedackelt.
:-p
2. öffnet deine Batch bei jedem Start eine neue Instanz von calc.exe.
3. macht meine das auch.
Es ist also gemopst wie gedackelt.
:-p
Nein, bei mir nicht.
Ich hab's gerade nochmal in der Startpartition (NTFS) probiert, auch da wird keine Datei "find" angelegt. Die Tests hatte ich auf meinem Ramdrive durchgeführt.
Ich hab's gerade nochmal in der Startpartition (NTFS) probiert, auch da wird keine Datei "find" angelegt. Die Tests hatte ich auf meinem Ramdrive durchgeführt.
Du solltest die Startdatei nochmal überschreiben mit
Das verhindert einen Mehrfachstart.
Die Calcbatch.cmd nicht von Hand starten!
qprocess > find calc.exe >NUL || start /MIN calcbatch.cmd
Das verhindert einen Mehrfachstart.
Die Calcbatch.cmd nicht von Hand starten!
Wenn du bisher den "Anleiern"-Batch mehrfach aufgerufen hast, hat er auch mehrere Fenster aufgemacht. Das habe ich geändert.
Eine Batch-Datei läuft unter dem Process CMD.exe, und der ist ja dann schon gestartet. Die Batch wirst du also nicht finden.
PS. standart gibt es nicht, nur entweder die Standarte oder den Standard
Mir dreht sich jedes Mal der Magen um, wenn ich das lesen muss.
http://de.wikipedia.org/wiki/Standart
PS. standart gibt es nicht, nur entweder die Standarte oder den Standard
Mir dreht sich jedes Mal der Magen um, wenn ich das lesen muss.
http://de.wikipedia.org/wiki/Standart