Не так давно ко мне обратились за помощью в реализации такого костыля.

Чтобы он мониторил через какое-то время процесс и если он не запущен автоматически — запускал.

первый вариант выглядел вот таким образом:

:proverka
tasklist | find «mspaint.exe»

if %ERRORLEVEL% EQU 1 goto restart
if %ERRORLEVEL% EQU 0 goto vremya

:vremya
timeout 10
goto proverka

:restart
start %windir%\system32\mspaint.exe
goto proverka

Данный код при запуске проверял через команду tasklist  запущен или нет процесс под таким именем.

Если ответ был отрицательным то он переходит на функцию :restart и запускает нужный процесс и переходит на функцию :proverka для повторной проверки о состоянии данного процесса.

Если ответ был положительным то он переходит на функцию :vremya и ждет указанное количество секунд после переходит на функцию :proverka и далее по кругу.

У данного кода проблема в том что окно командной строки всегда виден.

Вечером немного подумал и решил bat скрипт  довести до ума и скрыть назойливое окно и запускать уже автоматом скрытый процесс.

Для этого сначала создаем bat файл который добавит данную мини программу в планировщик windows.

В нем будет одна команда хотя её можно и ввести в командную строку. Лично для меня через bat файл проще.

 schtasks /Create /SC minute /mo 1 /TN win /TR c:\processmonitor.exe 

Самое важное в данном коде это параметр /mo 1 значения отвечают за то что программа будет исполняться каждую минуту.

изменяем на ваше усмотрение.

Дальше берем первый код и убираем лишнее и создаем файл processmonitor.bat с кодом.

tasklist | find «mspaint.exe»

if %ERRORLEVEL% EQU 1 goto restart

exit

:restart
start %windir%\system32\mspaint.exe

Теперь осталось только файл processmonitor.bat конвертировать в exe и скрыть окно командной строки.

Данную процедуру описывал вот тут Конвертировать bat файл в exe.

На этом все пользуйтесь кому нужно не забываем комментировать, задавать вопросы и делиться с друзьями.

От Kiroochkka