5Sep

Serijinis scenarijus, leidžiantis iš naujo paleisti programą

Bendrosios sistemos ir( arba) aplinkosaugos įvykiai, tokie kaip atnaujinimas iš budėjimo režimo arba tinklo praradimas, gali sukelti problemų tam tikroms programoms, kurios tikisi būti visada įjungtos ir prijungtos. Taigi, jei turite tam tikrą programą, kuri sugenda arba įjungiama į "nereaguoja" režimą šiek tiek dažnai, o iš naujo paleiskite ją tik tai, tai paprasčiausiai galite ištaisyti jums pritaikytą paketinį scenarijų, kad paprasčiausiai nužudytumėte programą irpaleiskite jį iš naujo.

Be akivaizdžios padėties aukščiau, šis scenarijus gali būti naudojamas įvairiausioms naudingoms užduotims:

  • Lengvai paleiskite programą du kartus spustelėdami arba naudodami karštą raktą.
  • Iš naujo paleiskite programą tik tada, kai ji pakabinta arba neatsako.
  • Vykdyti kaip numatytą užduotį, kad įsitikintumėte, jog programa visada veikia.
  • Visur kitur norite automatizuoti sąlyginį programos pakartotinį paleidimą.

Šablono pritaikymas turėtų būti gana savaime suprantamas komentaruose, todėl tinkamai sukonfigūruokite scenarijų, o visi esate nustatyti.

Script

@ECHO OFF ECHO Iš naujo paleiskite ECHO programą Parašė: Jasonas Faulkneras ECHO SysadminGeek.com ECHO.ECHO.SETLOCAL EnableExtensions REM Įveskite programos informaciją.SET AppName = Programos pavadinimas SET ExeFile = FileToLaunch.exe SET ExePath = C: PathToApplication REM Pasirinkite sąlygas nužudyti programą.REM vertė 1 = Taip, 0 = Ne SET KillIfRunning = 1 SET KillIfNotResponding = 1 SET KillIfUnknownStatus = 1 REM Nurodoma, kada paleisti programą: REM 1 = Pradėti tik tuo atveju, jei procesas buvo anksčiau nužudytas. REM 0 = paleiskite programą nepriklausomai. SET StartOnlyIfKilled = 1 SET KillStatus = "% TEMP% KillStatus.tmp.txt" SET Success = 0 ECHO Klaida egzistuojančio% AppName%. .. IF{ % KillIfRunning%} =={ 1} CALL: CheckKillStatus "% ExeFile%""RUNNING", jei{ % KillIfNotResponding%} =={ 1} CALL: CheckKillStatus "% ExeFile%" "NĖRA ATSAKINGŲ", jei{ % KillIfUnknownStatus%} =={ 1} CALL: CheckKillStatus "% ExeFile%" "UNKNOWN" ECHO.Jei{ % StartOnlyIfKilled%} =={ 1}( IF{ % Success%} =={ 0} GOTO End) ECHO paleisti iš naujo% 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 & gt;% 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): pabaiga

išvada

Nors galite rasti programas ten, kurios iš esmės atlieka tą pačią funkciją, naudojant paprastą scenarijų, pavyzdžiui, tai vengia "dar vieną programą" paleisti fone.