Показать полную графическую версию : [решено] Проверка наличия процесса в диспетчере задач
Надо запустить программу program.exe и пока она выполняется проверять каждые 5 сек не появился ли процесс werfault.exe. И если появился werfault.exe, то принудительно завершить его и program.exe и после продолжить выполнение батника. или продолжить выполнение батника, если программа program.exe сама завершила выполнение и werfault.exe не появился.
и после продолжить выполнение батника. »
И что должно происходить в этом «продолжении выполнения»?
или продолжить выполнение батника, если программа program.exe сама завершила выполнение и werfault.exe не появился. »
Тот же самый вопрос, что и выше.
@echo off
start "" "program.exe"
:#
(
tasklist| findstr /bilc:"werfault.exe">nul
)&& (
taskkill /f /im "werfault.exe" /t>nul
taskkill /f /im "program.exe" /t>nul
)|| (
timeout /t 5 /nobreak>nul
(
tasklist| findstr /bilc:"program.exe">nul
)&& (
goto:#
)
)
:: Продолжение работы:
for /l %%i in (1 1 10000) do echo Continuation...
exit /b
:: Продолжение работы:
for /l %%i in (1 1 10000) do echo Continuation... »
:lol: Наверное, так и надо делать: каков вопрос — таков ответ.
И что должно происходить в этом «продолжении выполнения»? »
Имелось ввиду, что батник выполняет много действий (запускает программы, архивирует, пишет логи. Также одним из действий является запуск program.exe (с непредвиденным результатом работы иногда, для чего и требуется отследить появления процесса werfault.exe) и после также продолжается запись логов, архивирование и т.д. Просто если появится процесс werfault.exe, то пока не закрыть его, батник не продолжит свою работу.
А так спасибо Georgio, всё работает :)
Цитата Georgio:
Код:
:: Продолжение работы:
for /l %%i in (1 1 10000) do echo Continuation...
»
Наверное, так и надо делать: каков вопрос — таков ответ. »
шутку не понял :( что выполнит эта команда? (не пробовал запускать)
шутку не понял что выполнит эта команда? (не пробовал запускать) »
Десять тысяч раз напишет Вам «Продолжаю выполнение» — всё как заказывали ;).
Georgio, вопрос на засыпку. Всегда ли можно ключи всех команд записывать так? вместо findstr /b /i /l /c записать findstr /bilc
Например xcopy /rych будет правильной записью? или надо xcopy /r /y /c /h и вообще между ключами обязательны пробелы?
V!RTuE, далеко не всегда. Это делается для сокращения кода, и, если не знаете, можно или нет, то писать нужно "/r /y /c /h". Да, команда "xcopy" допускает все три варианта: "/r /y /c /h", "/r/y/c/h" и "/rych". Команда "findstr" допускает два варианта: "/b /i /l" и "/bil". А команда "find" допускает только один вариант: "/c /v".
V!RTuE, далеко не всегда. Это делается для сокращения кода, и, если не знаете, можно или нет, то писать нужно "/r /y /c /h". Да, команда "xcopy" допускает все три варианта: "/r /y /c /h", "/r/y/c/h" и "/rych". Команда "findstr" допускает два варианта: "/b /i /l" и "/bil". А команда "find" допускает только один вариант: "/c /v". »
а где можно почитать какие команды допускают такое написание, а какие нет? или это всё ваш личный опыт?
а где можно почитать какие команды допускают такое написание, а какие нет? »
Практически нигде.
или это всё ваш личный опыт? »
Именно так.
а где можно почитать какие команды допускают такое написание, а какие нет? »
Опытным путём. Некоторые им делятся ;). Например: Findstr - Search for strings | Windows CMD | SS64.com (http://ss64.com/nt/findstr.html).
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.