backfight
Goto Top

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

Content-Key: 54809

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

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

Mitglied: 45426
45426 Mar 22, 2007 at 14:53:25 (UTC)
Goto Top
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:
(qprocess > find calc.exe >NUL) || Start calc.exe
Member: backfight
backfight Mar 22, 2007 at 14:56:47 (UTC)
Goto Top
Bei mir klappt es immernoch nicht

es kommt der fehler:
Der Befehl "qprocess" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Der Taschenrechner wird gestartet.

Und wie kann ich es bewerkstelligen das ich die batch aufrufe und sie permanent abfragt ob der taschenrechner läuft? und sobal er aus ist wieder gestartet wird?
Mitglied: 45426
45426 Mar 22, 2007 at 15:31:04 (UTC)
Goto Top
qprocess.exe sollte in %windir%\system32 vorhanden sein.

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.
Member: backfight
backfight Mar 22, 2007 at 16:33:54 (UTC)
Goto Top
Super danke! Genau das hab ich gewollt!
Member: Biber
Biber Mar 22, 2007 at 17:00:31 (UTC)
Goto Top
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]:
>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
Mitglied: 45426
45426 Mar 22, 2007 at 17:05:45 (UTC)
Goto Top
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. face-big-smile face-big-smile

Es ist also gemopst wie gedackelt.

:-p
Member: Biber
Biber Mar 22, 2007 at 17:18:38 (UTC)
Goto Top
Na, hpdm,

bei mir wird mit Deiner Variante folgendes angelegt:
>dir find
 Datenträger in Laufwerk Y: ist BIBERSBESTER
 Volumeseriennummer: 0815-4711

 Verzeichnis von D:\temp

22.03.2007  18:14                 0 find
               1 Datei(en)              0 Bytes
Bei Dir nicht? face-wink

Gruss Biber
Mitglied: 45426
45426 Mar 22, 2007 at 17:22:53 (UTC)
Goto Top
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.
Member: backfight
backfight Mar 22, 2007 at 18:09:50 (UTC)
Goto Top
also bei mir läuft alles bestens - keine probleme
Mitglied: 45426
45426 Mar 22, 2007 at 18:32:37 (UTC)
Goto Top
Du solltest die Startdatei nochmal überschreiben mit
qprocess > find calc.exe >NUL || start /MIN calcbatch.cmd

Das verhindert einen Mehrfachstart. face-wink
Die Calcbatch.cmd nicht von Hand starten!
Member: backfight
backfight Mar 22, 2007 at 18:39:25 (UTC)
Goto Top
kann ich nicht nachvollziehen bei mir läufts normal....


wenn ichs aus der cmd aufrufe und wenn ichs so aufrufe??
Mitglied: 45426
45426 Mar 22, 2007 at 18:41:39 (UTC)
Goto Top
Wenn du bisher den "Anleiern"-Batch mehrfach aufgerufen hast, hat er auch mehrere Fenster aufgemacht. Das habe ich geändert.
Member: backfight
backfight Mar 23, 2007 at 11:50:50 (UTC)
Goto Top
also mit der calc.exe funktioniert das alles bestens, denke mal weils ne standart windows exe ist.

sobald ich das mit ner batch versuche...also aus unserer batch eine batch aufrufen, funktioniert es nicht da er sie nicht findet.

muss ich da nen pfad angeben oder wie läuft das?

Gruß backfight
Mitglied: 45426
45426 Mar 23, 2007 at 12:01:04 (UTC)
Goto Top
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
Member: Biber
Biber Mar 23, 2007 at 12:39:33 (UTC)
Goto Top
Moin hpdm,
> Mir dreht sich jedes Mal der Magen um, wenn ich das lesen muss
Da ist Dein Magen aber ständig in Bewegung hier im Forum... face-wink
Member: backfight
backfight Mar 26, 2007 at 05:17:05 (UTC)
Goto Top
hi,
weiß denn dann noch jemand ne Lösung fürs Problem?

Gruß
Backfight