Hemsida » hur » Batch Script för att starta om en applikation på villkorligt sätt

    Batch Script för att starta om en applikation på villkorligt sätt

    Vanliga system- och / eller miljöhändelser som att återuppta från vänteläge eller förlora nätverksanslutning kan orsaka problem för vissa applikationer som förväntar sig att de alltid är på och anslutna. Så om du har en viss applikation som kraschar eller går in i "inte svara" -läget något ofta och omstart är den enda åtgärden för det, har vi en enkel åtgärd för dig i form av ett anpassningsbart batch script för att helt enkelt döda ansökan och starta om det.

    Utöver den uppenbara situationen ovan kan detta skript användas för en mängd olika användbara uppgifter, till exempel:

    • Starta om en applikation enkelt genom att dubbelklicka eller använda en snabbtangent.
    • Starta om ett program bara när det hänger eller svarar inte.
    • Kör som en schemalagd uppgift för att se till att en applikation alltid körs.
    • Överallt annars vill du automatisera villkorad omstart av en applikation.

    Anpassa skriptet ska vara ganska självförklarande av kommentarerna, så skriv bara in skriptet på rätt sätt och du är alla inställda.

    Manuset

    @ECHO OFF ECHO Starta om programmet ECHO Skrivet av: Jason Faulkner ECHO SysadminGeek.com ECHO. EKO. SETLOCAL EnableExtensions REM Ange programinformationen. SET AppName = Programnamn SET ExeFile = FileToLaunch.exe SET ExePath = C: PathToApplication REM Välj villkoren för att döda programmet. REM Ett värde av 1 = Ja, 0 = Nej SET KillIfRunning = 1 SET KillIfNotResponding = 1 SET KillIfUnknownStatus = 1 REM Ange när programmet ska startas: REM 1 = Starta endast om processen tidigare dödades. REM 0 = Starta programmet oavsett. SET StartOnlyIfKilled = 1 SET KillStatus = "% TEMP% KillStatus.tmp.txt" SET Success = 0 ECHO Dödande existerande% AppName% instance ... IF % KillIfRunning% == 1 CALL: CheckKillStatus "% ExeFile%" "RUNNING "IF % KillIfNotResponding% == 1 CALL: CheckKillStatus"% ExeFile% "" INTE RESPONDERAR "OM % KillIfUnknownStatus% == 1 CALL: CheckKillStatus"% ExeFile% "" UNKNOWN "ECHO. IF % StartOnlyIfKilled% == 1 (Om % Success% == 0 GOTO Slut) ECHO Omstart% AppName% ... START "% ExeFile%" "% ExePath %% ExeFile%" ECHO. OM EXIST% KillStatus% DEL / F / Q% KillStatus% ENDLOCAL: CheckKillStatus ECHO Död med 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 

    Slutsats

    Medan du kan hitta program där ute som utför i grund och botten samma funktion, med ett enkelt skript som detta undviker att "ännu ett program" körs i bakgrunden.