Це не завжди працює (це залежить від завантаження програми), але зазвичай ви можете створити такий пакетний файл:
@Echo off
:Start
NotePad
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
goto Start
Я використовував Блокнот як приклад.
Лінії
echo Press Ctrl-C if you don't want to restart automatically
ping -n 10 localhost
є лише затримкою (10 секунд), щоб дати користувачеві можливість перервати процес, перш ніж він запуститься знову.
Лінія
echo Program terminated at %Date% %Time% with Error %ErrorLevel% >> c:\logs\program.log
не потрібен, але він буде реєструватися кожного разу, коли програма закривається у файл, тому може бути корисно діагностувати проблему. ErrorLevel може не сказати вам багато, але програма повинна повернути 0, якщо вона закрита нормально, а не -zero повідомлення, якщо цього немає
Зауважте, ви згадуєте, що програма нічого не робить, якщо вона вже запущена. Зазвичай це означає, що програма запускає, виявляє, що інша копія вже запущена і негайно відключається. Якщо це так, і ваша програма працює до запуску цього пакетного файлу, пакет буде обводитися циклом і намагатиметься запускати програму кожні десять секунд.