Передо мной встала задача: проверить запущен ли процесс, и если нет, то запустить его.
Общий шаблон решения выглядит следующим образом (файл check.cmd):
Пример запуска скрипта:
Изменим его с целью проверки процесса, например, калькулятора (calc.exe). Если калькулятор не запущен, то запустить его. И так в бесконечном цикле... (оставить скрипт можно, например, через Ctrl+C):
Таким образом, каждые 10 секунд проверяется наличие заданного числа копий процесса (в данном случае 1). Если такого числа процессов нет, то запускается очередной.
Если программа находится в нестандартной папке, то начало скрипта можно немного изменить:
Желаю удачи!
Общий шаблон решения выглядит следующим образом (файл check.cmd):
@echo off rem Исправьте имя процесса по-умолчанию set filename=chrome.exe if "%1" neq "" set filename=%1 for /f %%a in ('tasklist /nh /fi "imagename eq %filename%" ^| find /c "%filename%"') do set /a quantity=%%a rem Если запущена 1 и более копий процесса if %quantity% geq 1 goto ALREADY_RUN echo No processes of %filename%! Doing stuff... rem ... Вставьте сюда свои команды, когда процесс НЕ запущен ... goto END :ALREADY_RUN echo Already run %quantity% processes of %filename% rem ... Вставьте сюда свои команды, когда процесс запущен ... :END pause
Пример запуска скрипта:
Изменим его с целью проверки процесса, например, калькулятора (calc.exe). Если калькулятор не запущен, то запустить его. И так в бесконечном цикле... (оставить скрипт можно, например, через Ctrl+C):
@echo off set filename=calc.exe if "%1" neq "" set filename=%1 :BEGIN for /f %%a in ('tasklist /nh /fi "imagename eq %filename%" ^| find /c "%filename%"') do set /a quantity=%%a if %quantity% geq 1 goto ALREADY_RUN echo Run %filename%... start %filename% goto END :ALREADY_RUN echo Already run %quantity% processes of %filename% :END rem Ждём 10 секунд между проверками timeout /t 10 goto BEGIN
Таким образом, каждые 10 секунд проверяется наличие заданного числа копий процесса (в данном случае 1). Если такого числа процессов нет, то запускается очередной.
Если программа находится в нестандартной папке, то начало скрипта можно немного изменить:
@echo off
d:
cd "D:\Programs\Test Pro v123"
set filename=Tester.exe
if "%1" neq "" set filename=%1
:BEGIN
...
Желаю удачи!
Спасибо, полезно!
ОтветитьУдалитьУ меня на серваке прога для таких дел крутится, ProManager(www.basicsoft.net/products.html), гарантирует, что выбранные программы будут всегда или в определенный отрезок времени запущены, а другим не дает запуститься. Мне помогло, теперь сплю спокойно по ночам :)
ОтветитьУдалить