/ / Batch-Skript zum bedingten Neustarten einer Anwendung

Batch-Skript zum bedingten Neustarten einer Anwendung

Gemeinsame System- und / oder Umweltereignisse wieDas Reaktivieren aus dem Standby-Modus oder der Verlust der Netzwerkverbindung kann bei bestimmten Anwendungen zu Problemen führen, bei denen erwartet wird, dass sie immer aktiv und verbunden sind. Wenn Sie also eine bestimmte Anwendung haben, die abstürzt oder nicht mehr reagiert, und ein Neustart die einzige Lösung ist, haben wir eine einfache Lösung für Sie in Form eines anpassbaren Stapelskripts, mit dem Sie die Anwendung einfach beenden und beenden können starte es neu.

Zusätzlich zu der oben beschriebenen offensichtlichen Situation kann dieses Skript für eine Reihe nützlicher Aufgaben verwendet werden, wie zum Beispiel:

  • Starten Sie eine Anwendung einfach neu, indem Sie darauf doppelklicken oder eine Tastenkombination verwenden.
  • Starten Sie ein Programm nur neu, wenn es hängt oder nicht reagiert.
  • Als geplante Aufgabe ausführen, um sicherzustellen, dass eine Anwendung immer ausgeführt wird.
  • Überall dort, wo Sie den bedingten Neustart einer Anwendung automatisieren möchten.

Das Anpassen des Skripts sollte durch die Kommentare ziemlich selbsterklärend sein. Konfigurieren Sie das Skript einfach entsprechend und Sie sind fertig.

Das Drehbuch

@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

Fazit

Während Sie dort Anwendungen finden können, die im Grunde die gleiche Funktion ausführen, können Sie mithilfe eines einfachen Skripts wie dieses vermeiden, dass „noch ein anderes Programm“ im Hintergrund ausgeführt wird.