При использовании for /f
и без указания tokens=
по умолчанию используется 1 токен.А с разделителем пробелов по умолчанию это означает, что он соответствует только первому слову в ваших критериях поиска по нескольким словам.
Я попытался исправить пример, добавив "tokens=*"
и заключив сравнение в двойные кавычки, ноэто только закончилось тем, что он захватил весь вывод из списка задач, который намного больше, чем просто имя процесса.
Я не хотел просто писать жесткий код в исправлении, которое сломалось бы для следующего варианта использования,так что вместо этого я выбил что-то другое, что будет работать для вас.Он любит пробелы и динамичен, поэтому он будет работать для других случаев позже.
Cmd:
set "zTarget=Secure System"
tasklist /nh /fi "imagename eq %zTarget%" 2>&1 | findstr /c:"%zTarget%" >nul 2>&1 && (echo yes, {%zTarget%} is running) || (echo no, {%zTarget%} is not running)
Вывод:
yes, {Secure System} is running