Errorlevel in a For loop (Windows batch)

Viewed 38820

I have the following windows batch code:

for %%i in (iidbms iigcc iigcd dmfacp dmfrcp rmcmd qwerty) do (
  tasklist | findstr /i %%i
  echo %errorlevel%
  if %errorlevel% == 0 (echo %%i ok process found %errorlevel%)
  if %errorlevel% == 1 (echo %%i no process found %errorlevel%)
)

But it doesn't work as I expect.

All the name processes iidbms, iigcc, iigcd, dmfacp, dmfrcp, rmcmd are real, and they are found, instead qwerty is an invented one and should not find it, so should print " no process found 1", but it doesn't, it always prints 0.

But what I have noted is that if I run the tasklist | findstr /i qwerty from the dos prompt, just after there is that the %errorlevel% = 1.

What sort of answer could be or better is?

3 Answers
Related