Główna » jak » Skrypt wsadowy do warunkowego ponownego uruchomienia aplikacji

    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.