mathe172
Goto Top

Sehr schnelle Methode um zu überprüfen ob Program ausgeführt wird

Hallo zusammen!

Ich habe eine Batch, von der ich wissen muss, ob sie läuft. Bis jetzt hab ich immer in der "Überprüf"-Batch die folgenden Zeilen verwendet:
for /F "tokens=1" %%A in ('tasklist /NH  /FI "IMAGENAME eq cmd.exe" /FI "WINDOWTITLE eq %~1"') do set "flag=1"  
if "%flag%" NEQ "1" call Aufgabenbatch.bat  
set "flag=0"  

Per Parameter wird der Titel des Dos"-Fensters" (sie läuft im Hintergrund) angegeben. In der Aufgabenbatch stehen dann die Sachen drin die Ausgeführt werden sollen wenn die Batch beendet wird. Sie läuft zwar im Hintergrund, kann aber trotzdem beendet werden (leider) oder abstürzen (hoff ich zwar nicht.) Jetzt meine Frage: Geht das irgendwie schneller? Denn ich überprüfe nicht immer nur eine Datei und dann wird das irgendwann langsam...

Mathe172

Content-Key: 148733

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

Printed on: April 18, 2024 at 03:04 o'clock

Member: Biber
Biber Aug 10, 2010 at 19:32:25 (UTC)
Goto Top
Moin mathe172,

vermutlich wirst du mir gleich ins Gesicht springen nach der ausführlichen und sauber formulierten Problembeschreibung, aber...

Mir fehlen noch Informationen.

Zitat von @mathe172:
Ich habe eine Batch, von der ich wissen muss, ob sie läuft.
Okay... WANN und WIE OFT musst du es wissen?
Läuft die Batch (geplanterweise) 2 Minuten, um einen Haufen Schutt wegzuräumen
- oder-
From Dusk Till Dawn
-oder-
von der Anmeldung des Benutzers bis zu einem unbestimmten Zeitpunkt, an dem der Benutzer ein Knöppken drückt?
Musst du es sekündlich oder halbminütlich überprüfen oder nur in jeder Werbepause?

In der Aufgabenbatch stehen dann die Sachen drin die Ausgeführt werden sollen wenn die Batch beendet wird.
Was bedeutet in diesem Satz das "WENN"? Sofort wenn...? MUSS wenn der Batch um 15:41:23 fertig wird, um 15:41:23:001 die "Aufgabenbatch" anspringen?
--> Weil... dann ist es getriggert...Ereignisgesteuert und eigentlich nicht von einem permanent laufenden Überwachungsjob zu tun.

und:
Sie läuft zwar im Hintergrund, kann aber trotzdem beendet werden (leider) oder abstürzen
Na ja... muss/soll/darf denn die "Aufgabenbatch" auch laufen, wenn das passiert?
Oder ist es Bedinging, dass die Zu-überwachende-Batch irgendwann ordnungsgemäß und ohne Fehler beendet wurde.

"Batch" heißt ja eigentlich implizit, dass ein Schritt nach dem anderen gemacht wird.
Und die Mimik mit "permanent überwachen" geht eben nur mit irgendetwas ressourcenfressenden, dass alle paar Millisekunden von einem Timerdienst angestupst wird... oder eben alle 2sec zum kühlschrank geht und nachschaut, ob inzwischen das MHD der Erdbeermarmelade überschritten ist,
Das ist -mit wieviel Kernels auch immer- niemals sonderlich effektiv.

Grüße
Biber
Member: mathe172
mathe172 Aug 11, 2010 at 13:10:33 (UTC)
Goto Top
Hallo Biber!

Zu deinen Fragen: Das Teil soll nachdem ich es manuell gestartet habe laufen bis die andere Batch beendet wird und dann so schnell wie möglich die Aufgabenbatch starten. Diese startet u.U. die erste Batch mit verschiedenen Parametern wieder. Die Aufgabenbatch muss in jedem Fall laufen sobald die Batch die per Parameter gesucht/überprüft wird starten.

Mir ging es vorallem darum zu wissen, ob es nicht eine Methode gibt, die vielleicht nicht jedesmal die Tasklist filtert und dann schaut ob was übrig bleibt.

Mathe172

P.S: Falls es hilft: Die zu überprüfende Batch kann ich wenn nötig verändern. (Vielleicht können die Batches ja miteinader "reden" und wenn die eine Aufhört, dann...)