Typowe zdarzenia systemowe i / lub środowiskowe, takie jak wznowienie ze stanu wstrzymania lub utrata połączenia sieciowego, mogą powodować problemy w niektórych aplikacjach, które oczekują, że będą zawsze włączone i połączone. Więc jeśli masz pewną aplikację, która czasami ulega awarii lub przechodzi w tryb „nie odpowiada”, a ponowne uruchomienie jest jedyną poprawką, mamy dla Ciebie prostą poprawkę w postaci dostosowywalnego skryptu wsadowego, który po prostu zabije aplikację i uruchom go ponownie.
Oprócz oczywistej sytuacji powyżej, ten skrypt może być używany do różnych przydatnych zadań, takich jak:
- Z łatwością uruchom ponownie aplikację, klikając dwukrotnie lub używając klawisza skrótu.
- Uruchom ponownie program tylko wtedy, gdy zawiesił się lub nie odpowiada.
- Uruchom jako zaplanowane zadanie, aby upewnić się, że aplikacja jest zawsze uruchomiona.
- Gdziekolwiek chcesz zautomatyzować warunkowe ponowne uruchamianie aplikacji.
Dostosowywanie skryptu powinno być dość oczywiste dzięki komentarzom, więc po prostu skonfiguruj skrypt odpowiednio i gotowe.
Scenariusz
@ECHO OFF
Uruchom ponownie aplikację ECHO
ECHO Napisane przez: Jason Faulkner
ECHO SysadminGeek.com
ECHO.
ECHO.
SETLOCAL EnableExtensions
REM Wprowadź informacje o aplikacji.
SET AppName = Nazwa aplikacji
SET ExeFile = FileToLaunch.exe
SET ExePath = C: PathToApplication
REM Wybierz warunki do zabicia aplikacji.
REM Wartość 1 = Tak, 0 = Nie
SET KillIfRunning = 1
SET KillIfNotResponding = 1
SET KillIfUnknownStatus = 1
REM Określ, kiedy uruchomić aplikację:
REM 1 = Start tylko, jeśli proces został wcześniej zabity.
REM 0 = Uruchom aplikację niezależnie.
SET StartOnlyIfKilled = 1
SET KillStatus = "% TEMP% KillStatus.tmp.txt"
Ustaw sukces = 0
ECHO Zabijanie istniejącej instancji% AppName% ...
IF {%KillIfRunning%} == {1} CALL: CheckKillStatus "% ExeFile%" "RUNNING"
IF {%KillIfNotResponding%} == {1} CALL: CheckKillStatus "% ExeFile%" "NOT RESPONDING"
IF {%KillIfUnknownStatus%} == {1} CALL: CheckKillStatus "% ExeFile%" "UNKNOWN"
ECHO.
JEŚLI {%StartOnlyIfKilled%} == {1} (
IF {%Success%} == {0} GOTO End
)
ECHO Restartowanie% AppName% ...
START "% ExeFile%" "% ExePath %% ExeFile%"
ECHO.
JEŚLI ISTNIEJE% KillStatus% DEL / F / Q% KillStatus%
ENDLOCAL
: CheckKillStatus
ECHO Zabijanie ze statusem:% ~ 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 =% sukcesów% + 1
)
:Koniec
Wniosek
Chociaż można znaleźć aplikacje, które wykonują zasadniczo tę samą funkcję, użycie prostego skryptu, takiego jak ten, pozwala uniknąć uruchamiania w tle „jeszcze jednego programu”.