Häufige System- und/oder Umgebungsereignisse wie das Wiederaufnehmen aus dem Standby oder das Verlieren der Netzwerkverbindung können bei bestimmten Anwendungen, die erwarten, dass sie immer eingeschaltet und verbunden sind, Probleme verursachen. Wenn Sie also eine bestimmte Anwendung haben, die etwas häufig abstürzt oder in den «nicht reagierenden» Modus wechselt und ein Neustart die einzige Lösung dafür ist, haben wir eine einfache Lösung in Form eines anpassbaren Batch-Skripts für Sie, um die Anwendung einfach zu beenden und starten Sie es neu.
Neben der oben genannten offensichtlichen Situation kann dieses Skript für eine Vielzahl nützlicher Aufgaben verwendet werden, wie zum Beispiel:
- Starten Sie eine Anwendung ganz einfach neu, indem Sie doppelklicken oder einen Hotkey verwenden.
- Starten Sie ein Programm nur dann neu, wenn es hängen bleibt oder nicht reagiert.
- Als geplante Aufgabe ausführen, um sicherzustellen, dass eine Anwendung immer ausgeführt wird.
- Woanders möchten Sie den bedingten Neustart einer Anwendung automatisieren.
Das Anpassen des Skripts sollte durch die Kommentare ziemlich selbsterklärend sein, also konfigurieren Sie das Skript einfach entsprechend und Sie sind fertig.
Das Skript
@ECHO OFF
ECHO Restart Application
ECHO Written by: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
SETLOCAL EnableExtensions
REM Enter the application information.
SET AppName=Application Name
SET ExeFile=FileToLaunch.exe
SET ExePath=C:PathToApplication
REM Select the conditions to kill the application.
REM A value of 1 = Yes, 0 = No
SET KillIfRunning=1
SET KillIfNotResponding=1
SET KillIfUnknownStatus=1
REM Specify when to start the application:
REM 1 = Start only if the process was previous killed.
REM 0 = Start the application regardless.
SET StartOnlyIfKilled=1
SET KillStatus="%TEMP%KillStatus.tmp.txt"
SET Success=0
ECHO Killing existing %AppName% instance...
IF {%KillIfRunning%}=={1} CALL :CheckKillStatus "%ExeFile%" "RUNNING"
IF {%KillIfNotResponding%}=={1} CALL :CheckKillStatus "%ExeFile%" "NOT RESPONDING"
IF {%KillIfUnknownStatus%}=={1} CALL :CheckKillStatus "%ExeFile%" "UNKNOWN"
ECHO.
IF {%StartOnlyIfKilled%}=={1} (
IF {%Success%}=={0} GOTO End
)
ECHO Restarting %AppName%...
START "%ExeFile%" "%ExePath%%ExeFile%"
ECHO.
IF EXIST %KillStatus% DEL /F /Q %KillStatus%
ENDLOCAL
:CheckKillStatus
ECHO Killing with status: %~2
TASKKILL /FI "STATUS eq %~2" /IM "%~1" /F > %KillStatus%
SET /P KillResult= < %KillStatus%
FOR /F "tokens=1,* delims=:" %%A IN ("%KillResult%") DO (
ECHO %%A:%%B
IF /I {%%A}=={SUCCESS} SET /A Success=%Success%+1
)
:End
Abschluss
Während Sie Anwendungen finden können, die im Wesentlichen die gleiche Funktion ausführen, vermeidet die Verwendung eines einfachen Skripts wie dieses, dass „noch ein weiteres Programm“ im Hintergrund ausgeführt wird.