Skrypt wsadowy do warunkowego ponownego uruchomienia aplikacji
Typowe zdarzenia systemowe i / lub środowiskowe, takie jak wznowienie ze stanu wstrzymania lub utrata połączenia sieciowego, mogą powodować problemy w przypadku niektórych aplikacji, które oczekują, że będą zawsze włączone i podłączone. Jeśli więc masz pewną aplikację, która często ulega awarii lub przechodzi w tryb "nie odpowiada", a jedynym jej rozwiązaniem jest ponowne uruchomienie, mamy dla Ciebie prostą poprawkę w postaci konfigurowalnego skryptu wsadowego, który po prostu zabije aplikację i uruchom ponownie.
Oprócz powyższej oczywistej sytuacji skrypt ten może być używany do wielu przydatnych zadań, takich jak:
- Z łatwością uruchom ponownie aplikację, klikając dwukrotnie lub używając klawisza skrótu.
- Zrestartuj program tylko wtedy, gdy jest zawieszony lub nie odpowiada.
- Uruchom jako zaplanowane zadanie, aby upewnić się, że aplikacja jest zawsze uruchomiona.
- Gdziekolwiek indziej chcesz zautomatyzować warunkowe restartowanie aplikacji.
Dostosowanie skryptu powinno być całkiem zrozumiałe w komentarzach, więc po prostu skonfiguruj skrypt odpowiednio i wszystko gotowe.
Scenariusz
@ECHO OFF ECHO Uruchom ponownie aplikację 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, aby zabić aplikację. REM Wartość 1 = Tak, 0 = Brak SET KillIfRunning = 1 SET KillIfNotResponding = 1 SET KillIfUnknownStatus = 1 REM Określ, kiedy uruchomić aplikację: REM 1 = Uruchom tylko, jeśli proces został wcześniej zabity. REM 0 = Uruchom aplikację niezależnie. SET StartOnlyIfKilled = 1 SET KillStatus = "% TEMP% KillStatus.tmp.txt" SET Success = 0 ECHO Zabijanie obecnej instancji% AppName% ... IF % KillIfRunning% == 1 WEZWANIE: CheckKillStatus "% ExeFile%" "RUNNING "IF % KillIfNotResponding% == 1 WEZWANIE: CheckKillStatus"% ExeFile% "" NOT RESPONDING "JEŚLI % KillIfUnknownStatus% == 1 WEZWANIE: CheckKillStatus"% ExeFile% "" UNKNOWN "ECHO. IF % StartOllyIfKilled% == 1 (JEŻELI % sukcesu% == 0 GOTO koniec) ECHO Restartowanie% AppName% ... START "% ExeFile%" "% ExePath %% ExeFile%" ECHO. JEŚLI EXIST% KillStatus% DEL / F / Q% KillStatus% ENDLOCAL: CheckKillStatus ECHO Killing ze statusem:% ~ 2 STATUS TASKKILL / FI "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
Wniosek
Podczas gdy można znaleźć aplikacje, które wykonują zasadniczo tę samą funkcję, za pomocą prostego skryptu takiego jak to unika się "kolejnego programu" działającego w tle.