Войти

Показать полную графическую версию : [решено] Проверка наличия процесса в диспетчере задач


V!RTuE
31-08-2014, 20:28
Надо запустить программу program.exe и пока она выполняется проверять каждые 5 сек не появился ли процесс werfault.exe. И если появился werfault.exe, то принудительно завершить его и program.exe и после продолжить выполнение батника. или продолжить выполнение батника, если программа program.exe сама завершила выполнение и werfault.exe не появился.

Iska
31-08-2014, 21:15
и после продолжить выполнение батника. »
И что должно происходить в этом «продолжении выполнения»?

или продолжить выполнение батника, если программа program.exe сама завершила выполнение и werfault.exe не появился. »
Тот же самый вопрос, что и выше.

Georgio
31-08-2014, 21:22
@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

Iska
31-08-2014, 22:33
:: Продолжение работы:
for /l %%i in (1 1 10000) do echo Continuation... »
:lol: Наверное, так и надо делать: каков вопрос — таков ответ.

V!RTuE
31-08-2014, 22:41
И что должно происходить в этом «продолжении выполнения»? »
Имелось ввиду, что батник выполняет много действий (запускает программы, архивирует, пишет логи. Также одним из действий является запуск program.exe (с непредвиденным результатом работы иногда, для чего и требуется отследить появления процесса werfault.exe) и после также продолжается запись логов, архивирование и т.д. Просто если появится процесс werfault.exe, то пока не закрыть его, батник не продолжит свою работу.

А так спасибо Georgio, всё работает :)
Цитата Georgio:
Код:
:: Продолжение работы:
for /l %%i in (1 1 10000) do echo Continuation...
»
Наверное, так и надо делать: каков вопрос — таков ответ. »
шутку не понял :( что выполнит эта команда? (не пробовал запускать)

Iska
31-08-2014, 22:58
шутку не понял что выполнит эта команда? (не пробовал запускать) »
Десять тысяч раз напишет Вам «Продолжаю выполнение» — всё как заказывали ;).

V!RTuE
31-08-2014, 23:14
Georgio, вопрос на засыпку. Всегда ли можно ключи всех команд записывать так? вместо findstr /b /i /l /c записать findstr /bilc
Например xcopy /rych будет правильной записью? или надо xcopy /r /y /c /h и вообще между ключами обязательны пробелы?

Georgio
31-08-2014, 23:41
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
31-08-2014, 23:56
V!RTuE, далеко не всегда. Это делается для сокращения кода, и, если не знаете, можно или нет, то писать нужно "/r /y /c /h". Да, команда "xcopy" допускает все три варианта: "/r /y /c /h", "/r/y/c/h" и "/rych". Команда "findstr" допускает два варианта: "/b /i /l" и "/bil". А команда "find" допускает только один вариант: "/c /v". »
а где можно почитать какие команды допускают такое написание, а какие нет? или это всё ваш личный опыт?

Georgio
01-09-2014, 00:03
а где можно почитать какие команды допускают такое написание, а какие нет? »

Практически нигде.


или это всё ваш личный опыт? »

Именно так.

Iska
01-09-2014, 00:37
а где можно почитать какие команды допускают такое написание, а какие нет? »
Опытным путём. Некоторые им делятся ;). Например: Findstr - Search for strings | Windows CMD | SS64.com (http://ss64.com/nt/findstr.html).




© OSzone.net 2001-2012