Supportnet Computer
Planet of Tech

Supportnet / Forum / BS-Sonstige

Batch-File Abbruch zeitl. Begrenzung





Frage

Hallo an alle, ich moechte gerne die Ausfuehrung eines Batch-Files zeitlich begrenzen. Das Batch-File sollte also fuer die Abarbeitung seiner Befehle nur eine vorgegebene Zeit zur Verfuegung haben. Danach soll die Abarbeitung abgebrochen werden. Ich kann mir vorstellen, dass es evtl. einen /Schalter gibt, mit dem man diese Zeit beim Aufruf einstellen kann. Hintergrund meiner Frage ist folgendes Problem: Meine Dos-Anwendung haengt sich auf, wenn ein angeschlossener Server nicht gefunden wird und laeuft in einer Endlosschleife weiter. Die zweite andere aufrufende Dos-Anwendung wartet auf die erste Anwendung und kann dann auch nicht weitermachen. Haette ich jetzt die Möglichkeit, die erste Dos-Anwendung nach einer bestimmten Zeit abzuschiessen, wuerde es weitergehen. Kann mir vielleicht jemand weiterhelfen ?

Antwort 1 von manei

Hallo,

kommt darauf an welches System Du hast.

Unter NT-basierten Systemen (NT/W2k/XP) bekommst Du mit set %time% die Zeit und kannst diese dann auch entsprechend verändern.

Unter Win9x Systemen (95/98/ME) ist dies zwar auch machbar, ist aber etwas umständlicher. Die Zeitveränderungen müßten hier mit einem Script oder einem Freewaretool vorgenommen werden.

MfG maneich



Antwort 2 von Undertaker

Hi,

wenn das Script / die Anwendung über den Taskmanager gestartet wird, kannst Du angeben, nach welcher Laufzeit der Job abgebrochen werden soll.
Aber ich denke, es wäre besser, wenn zuerst geprüft wird, ob der Server erreichbar ist:
PING -n 1 -w 20 [COMPUTERNAME/IP-ADRESSE] | FINDSTR "Antwort"
IF %ERRORLEVEL% == 1 GOTO ENDE

:: Hier die weitere Abarbeitung ::

:ENDE
EXIT


Gruß
Undertaker

Antwort 3 von yul

Hallo Undertaker,

Deine Antwort klingt recht vielversprechend.

Ich erklaere Dir hier noch einige Details zu meinem Problem.
Wir pingen den Server bereits an. Auch wenn dieser antwortet haengt sich die Applikation dann manchmal spaeter auf. Da muessen unsere System-Administratoren noch einige Schwachstellen beheben.
Mit Deinem Vorschlag, die Anwendung nach einer bestimmten Zeit abzubrechen, könnten wir das Problem geschickt umgehen.
Weißt Du vielleicht, wie man vor dem Start einer Anwendung dem Betriebssystem mitteilen kann, wie lange die Anwendung Zeit hat, abzulaufen ?

Gruß
yul




Antwort 4 von Undertaker

Hi,

der Abbruch der Batchdatei funktioniert nur, wenn die Batchdatei über den Taskplaner gestaret wird.

Im Karteireiter Parameter gibt es die Funktion:
Task beenden nach: xx Stunde(n) xx Minute(n)
Diese Funktion aktivieren und den Standard-Wert (72 Stunden) auf die gewünschte Zeit einstellen, nach der der Task beendet werden soll.

Ich habe aber schon eine Idee, das es ohne Taskplaner funktioniert. Ich muß das mal beim Frühstück testen...

Gruß
Undertaker

Antwort 5 von yul

Guten Appetit Undertaker :)

Antwort 6 von Undertaker

Hi,

es gibt die Möglichkeit, einen Prozess per Batch zu beenden. Allerdings muß dazu die Pid oder der Prozessname bekannt sein.

Kannst Du bitte mal prüfen, oder der zu beendende Prozess einen eindeutigen Namen im Task-Manager besitzt, oder ob der Prozessname mehrfach vorhanden ist (z.B. CMD)?

Oder maile mir doch mal eine Beschreibung, wie welche Batchdatei aufgerufen wird.

Gruß
Undertaker

Antwort 7 von yul

Mein Prozess hat schon einen eindeutigen Namen naemlich: fdfmngr.exe. Ich kann ihn auch im Task-Manager sehen wenn er abläuft.

fdfmngr.exe wird aus einer anderen Applikation heraus mit Namen Vcats aufgerufen. Vcats startet fdfmngr.exe durch Aufruf einer internen Funktion: S.LaunchDosApplication(fdfmngr.exe).

Wenn Du eine Moeglichkeit weißt, wie man einen laufenden Prozess beenden und die Zeit einstellen kann, die vergehen darf, bis zur Beendigung des Prozesses, koenntest Du uns ganz schoen aus der Patsche helfen.

Ich habe leider Deine e-mail adresse nicht.

Gruss

Antwort 8 von Undertaker

Hi,

wenn Du es schaffst, kurz zuvor - also quasi parallel zur fdfmngr.exe - eine Scriptdatei zu starten, könnte es funktionieren.

Für die Scriptdatei brauchst Du zwei Programme:

Sleep.exe aus dem Ressource Kit von Win2k und pskill.exe aus den PS-Tools von www.sysinternals.com.

Die Scriptdatei sollte dann so aussehen:
sleep 60
pskill fdfmngr.exe

Der Parameter von sleep.exe ist die zu wartende Zeit in Sekunden. Der Parameter von pskill.exe ist entweder die ID oder der Name des Prozesses, wie sie im Task-Manager angezeigt werden.

Meine Addy findest Du in meiner Visitenkarte...

Gruß
Undertaker

Antwort 9 von yul

Hallo Marc,

wir haben gerade eine Flasche Sekt geköpft und trinken auf Dich.
Es funktioniert hervorragend. Man muß halt nur die richtigen Leute fragen :)

Ist Deine e-mail-adresse: support.tron@onlinehome.de ?