Войти

Показать полную графическую версию : Несколько процессов в tasklist find


Boria138
16-08-2021, 17:26
Как сделать так что бы tasklist искал сразу несколько процессов например у нас есть условный блокнот я хочу открывать его через cmd но только если не открыт калькулятор или paint или же блокнот уже не запущен

@echo off

TIMEOUT /T 5
Set process1=paint.exe calc.exe
set process2=notepad.exe

tasklist /FI "ImageName EQ %process2%" | find /I "%process2%"
If %errorlevel% NEQ 1 goto :ex
:first
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 0 goto :first
taskkill /f /im %process2%
:first
tasklist /FI "ImageName EQ %process2%" | find /I "%process2%"
If %errorlevel% NEQ 1 goto :first

:go
tasklist /FI "ImageName EQ %process1%" | find /I "%process1%"
If %errorlevel% NEQ 1 goto :go
start notepad.exe
goto :first

:ex
exit

alpap
16-08-2021, 17:49
:: Пропал любой процесс из списка - выполнить команду
@echo off
set "pr1=proc1.exe"
set "pr2=proc2.exe"
cmd /c for /l %%i in () do @for %%p in (%pr1% %pr2%) do @tasklist /fi "imagename eq %%p"^|findstr /v :^|^| (echo Запуск^& exit /b)^&^>nul timeout /t 1 /nobreak
pause



:: Мониторит открытый калькулятор и блокнот, если пропал калькулятор - закроется и блокнот
@echo off
set "p1=calc.exe"
set "p2=notepad.exe"
cmd /c for /l %%# in () do @tasklist /fi "imagename eq %p1%"^|findstr /v :^|^| (taskkill /f /im "%p2%"^& exit/b)^&^>nul timeout /t 1 /nobreak
pause

megaloman
17-08-2021, 08:23
Я понял, что надо открыть условный "notepad.exe", если не запущены условные ни "notepad.exe" ни "calc.exe" ни "mspaint.exe".
А что если так:
tasklist |FindStr /B /I /C:"notepad.exe" /C:"calc.exe" /C:"mspaint.exe" ||Start " " "C:\Windows\System32\notepad.exe"или втихаря:tasklist |>nul FindStr /B /I /C:"notepad.exe" /C:"calc.exe" /C:"mspaint.exe" ||Start " " "C:\Windows\System32\notepad.exe"Или, если это только часть большого bat-файла, то ИМХО удобнее так:@Echo Off
Set PgmRun="C:\Windows\System32\notepad.exe"
Set PgmVeto="notepad.exe" "calc.exe" "mspaint.exe"

Set "Veto= %PgmVeto%"
tasklist |>nul FindStr /B /I %Veto: "= /C:"% ||Start " " %PgmRun%
Exit /B 0




© OSzone.net 2001-2012