Пакетний сценарій для умовного перезапуску програми
Загальні системні та / або екологічні події, такі як відновлення з режиму очікування або втрата мережного підключення, можуть спричинити проблеми для певних програм, які очікують постійного підключення. Отже, якщо у вас є певна програма, яка виходить з ладу або переходить у режим "не відповідає", а перезавантаження є єдиним виправленням для неї, у нас є проста виправлення для вас у вигляді настроюваного пакетного сценарію, щоб просто вбити додаток і перезапустіть його.
Окрім очевидної ситуації вище, цей сценарій може використовуватися для різноманітних корисних завдань, таких як:
- Легко перезапустіть програму, двічі клацнувши або використовуючи гарячу клавішу.
- Перезапустіть програму лише тоді, коли вона зависла або не відповідає.
- Запустити як заплановане завдання, щоб переконатися, що програма завжди працює.
- В іншому місці потрібно автоматизувати умовне перезавантаження програми.
Налаштування сценарію має бути досить зрозумілим для коментарів, тому просто налаштуйте сценарій належним чином, і ви все налаштовані.
Сценарій
@ECHO OFF ECHO Перезапустити додаток ECHO Написав: Джейсон Фолкнер ECHO SysadminGeek.com ECHO. ECHO. SETLOCAL EnableExtensions REM Введіть інформацію про програму. SET AppName = Назва програми SET ExeFile = FileToLaunch.exe SET ExePath = C: PathToApplication REM Виберіть умови, щоб убити програму. REM Значення 1 = Так, 0 = Немає SET KillIfRunning = 1 SET KillIfNotResponding = 1 SET KillIfUnknownStatus = 1 REM Вкажіть, коли потрібно запустити програму: REM 1 = Почати тільки, якщо процес був попередньо убитий. REM 0 = Запускати програму незалежно. SET StartOnlyIfKilled = 1 SET KillStatus = "% TEMP% KillStatus.tmp.txt" SET успіх = 0 ECHO Вбивство існуючих% AppName% instance ... IF % KillIfRunning% == 1 CALL: CheckKillStatus "% ExeFile%" "RUNNING "IF % KillIfNotResponding% == 1 CALL: CheckKillStatus"% ExeFile% "" НЕ ВІДПОВІДАЄТЬСЯ "IF % KillIfUnknownStatus% == 1 CALL: CheckKillStatus"% ExeFile% "" UNKNOWN "ECHO. IF % StartOnlyIfKilled% == 1 (IF % Success% == 0 GOTO End) ECHO Перезавантаження% AppName%… START "% ExeFile%" "% ExePath %% ExeFile%" ECHO. IF EXIST% KillStatus% DEL / F / Q% KillStatus% ENDLOCAL: CheckKillStatus ECHO Забиття зі статусом:% ~ 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
Висновок
Хоча ви можете знайти там програми, які виконують в основному ту ж саму функцію, використовуючи простий скрипт, такий як це дозволяє уникнути того, що "ще одна програма" працює у фоновому режимі.