Проверьте, запущен ли процесс или нет, и запустите несколько программ, если нет, и завершите работу.
Я хочу постоянно проверять, работает ли программа
Приведенное ниже описание должно работать при необходимости вызывать пакетные сценарии один за другим и в основном просто проверять в памяти на компьютере, с которым выполняется команда TASKLIST
для подтверждения его выполнения.
Если он не запущен, вызывайте пакетные сценарии один за другим; в противном случае перейдите к процедуре :B
и начните проверку заново. Если он запущен, то выполните ECHO
"%MyProcess%" est en cours d^'execution
а затем перейдите к процедуре :B
и проверьте еще раз для подтверждения (непрерывная проверка).
ВНИМАНИЕ: Убедитесь, что у вас есть GOTO EOF в конце вызываемых пакетных сценариев и НЕ EXIT
иначе они не передадут управление вызывающей стороне, чтобы исходный пакет мог продолжить проверку цикла. (см. ниже пример CALLED SCRIPT ПРИМЕР).
СЦЕНАРИЙ, КОТОРЫЙ ИМЕЕТ ПРОВЕРКУ ЛОГИКИ (используйте эту)
@ECHO OFF
:B
SET MyProcess=cmd.exe
ECHO "%MyProcess%"
TASKLIST | FINDSTR /I "%MyProcess%"
IF ERRORLEVEL 1 (GOTO :StartScripts) ELSE (ECHO "%MyProcess%" est en cours d^'execution)
GOTO :B
:StartScripts
::: //-- Put in the full path to the batch scripts to call
::: //-- Be sure the security context this process runs as has access to execute the below called batch scripts
CALL "C:\Path\1.bat"
CALL "C:\Path\2.bat"
CALL "C:\Path\3.bat"
GOTO :B
(Я предполагаю, что вызываемые пакетные сценарии будут иметь логику для запуска любого процесса, который, как было установлено, НЕ найден работающим в памяти на компьютере, на котором выполняется сценарий abobe, поэтому просто убедитесь, что GOTO EOF
- это последнее, что ВСЕ делают. Мне нужно было бы увидеть логику в них, чтобы знать, будет ли это работать нормально или нет, хотя в противном случае.)
ПРИМЕР ВЫЗВАННОГО СКРИПТА (например, 1.bat, 2.bat, 3.bat)
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<LOGIC>
<END OF LOGIC>
::: Keep GOTO EOF here to pass control back to the caller
GOTO EOF
ДРУГИЕ ЗАМЕЧАНИЯ
Вы можете поместить логику в тот же пакетный сценарий, который запускают три отдельных называемых пакетных сценария, и просто вызывать их как метки \ подпрограммы, но мне нужно было бы увидеть логику в них, чтобы убедиться, что она будет работать. Пока у каждого из них есть GOTO EOF
внизу, они будут работать одинаково, но таким образом вся логика будет в одном и том же файле пакетного сценария.
Логика пакетного сценария с TASKLIST
и FINDSTR
как я это понимаю, должна работать без синтаксиса [ /NH /FI imagename eq
], как в примере, который вы показали в своем вопросе. Использование FINDSTR
вместо FIND
как в вашем примере, также хорошо.
У меня есть логика с пакетным аналогом этому, которая локально и удаленно проверяет процессы, запущенные на серверах, которые либо автоматически исправляют то, что вы делаете, либо отправляют электронное письмо, чтобы указать, что кому-то нужно уделить внимание, поэтому я подтвердил это Метод логики сценария, который я предоставил, работает с успехом. У меня просто нет всей вашей логики для оптимизации, подтверждения и т.д. В противном случае.
ДОПОЛНИТЕЛЬНЫЕ РЕСУРСЫ