Если процесс1 не запущен, запустите процесс2 - PullRequest
0 голосов
/ 29 июня 2019

Мне нужно создать скрипт, который запускает process1, который порождает process2, затем ждет, пока process2 завершит работу, и запустит process3.

Звучит довольно просто для меня, но я не могу заставить его работать вообще.

Я попытался найти подобное решение и нашел что-то вроде этого

tasklist /FI "IMAGENAME eq process1"
if errorlevel 0 (
        echo "1"
    exit 0
) else (
    echo "2"
    exit 0

)

но даже что-то такое простое порождает около 1000 снарядов, а затем падает

Я почти уверен, что делаю что-то не так, но не могу понять, что.

Ответы [ 3 ]

1 голос
/ 29 июня 2019

Ваша проблема может заключаться в том, что ваша интерпретация if errorlevel 0 отличается от интерпретации cmd.

if errorlevel n интерпретируется cmd как "если уровень ошибки равен n или больше, чем n "

Следовательно, if errorlevel 0 по существу всегда верно (существуют некоторые эзотерические обстоятельства, когда errorlevel становится отрицательным).

Решение: Самый простой, вероятно, if %errorlevel%==0 Другой выбор: if errorlevel 1 (the "else" part from your code) else (the TRUE part of your code)

0 голосов
/ 02 июля 2019

РЕШИТЬ:

Итак, я делал что-то не так, как указал @elzooilogico - по какой-то причине я назвал его tasklist.bat, и он вызвал сам себя.

Мой скрипт выглядит так и работает как шарм

start process1.lnk
timeout /t 50
:loop
tasklist /FI "IMAGENAME eq process2.exe" 2>NUL | find /I /N "process2.exe">NUL
if errorlevel 1 (
    start process3
) else (
    timeout /t 5
    goto loop
)

Он запускает process1, ждет 50 секунд, а затем завершает работу, если его process2 больше не существует, или циклически повторяется с интервалом в 5 секунд, пока не завершится process2. Когда это наконец происходит, запускается процесс 3.

0 голосов
/ 29 июня 2019

start имеет переключатель /wait, который указывает пакету запустить программу и не продолжать сценарий до его завершения.

start "" /wait process1
start "" /wait process2
start "" /wait process3
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...