2016-11-19 3 views

ответ

0
for /r %%i in (*.exe) do tasklist|findstr /i /b /L /c:"%%~nxi" >nul&if errorlevel 1 start "" /b "%%i" 

Это выполняет tasklist, посылая результат findstr который выглядит для линии, которая начинается /b/L буквально /C: строка «%% я» /i независимо от регистра (утилизировать любой выход). Если findstr не находит соответствующую строку, установите errorlevel в 1. Оператор if обнаруживает, что errorlevel равен 1 или больше, поэтому, если его не найти, запустите его.

+0

Вы также можете сократить его, используя условное выполнение. 'for/R %% i in (* .exe) do tasklist | findstr/i/b/L/c:" %% i "> nul || start" "/ b" %% i "' – Squashman

+0

Не делает потому что %% i - это путь к exe, а не к имени .exe, поэтому он вернет false, потому что tasklist | findstr возвращает только имя exe, а не путь –

+1

OK - исправлено (добавьте '~ nx' перед' i' в строка 'findstr', чтобы выбрать только имя и расширение. – Magoo

Смежные вопросы