Подстановочный знак в названии задачи - PullRequest
0 голосов
/ 06 сентября 2018

Когда я хочу закрыть следующие два (вымышленных ...) приложения, используя taskkill ...

Two hello-sayers

... Я бы использовал taskkill /FI "WINDOWTITLE eq Hello*".

Но как насчет этих двух:

Alcoholic programs

taskkill /FI "WINDOWTITLE eq * wine" дает мне FEHLER: Der Suchfilter wurde nicht erkannt. , что можно перевести как ОШИБКА: фильтр поиска не может быть распознан.

Итак, как я могу фильтровать с подстановочным знаком в начале?

1 Ответ

0 голосов
/ 06 сентября 2018

Подстановочный знак в начале не работает. Вам нужно будет включить findstr, используя немного инициативы.

for /f "tokens=2 delims=," %%a in ('tasklist /fi "imagename eq notepad.exe" /v /fo:csv /nh ^| findstr /r "wine"') do taskkill /pid %%a

Итак, мы ищем изображения с wine в названии. Используйте /fo для формата csv, /nh без заголовка, затем найдите строку "wine" в imagename, а затем уничтожьте по идентификатору процесса, если он найден.

Чтобы не быть конкретным образом, сделайте:

for /f "tokens=2 delims=," %%a in ('tasklist /v /fo:csv /nh ^| findstr /r "wine"') do taskkill /pid %%a

Редактировать

Что касается беспокойства в убийстве неправильных заданий:

@echo off
set "images=notepad.exe,calc.exe,winword.exe,excel.exe"
for %%i in (%images%) do (
   for /f "tokens=2 delims=," %%a in ('tasklist /fi "imagename eq %%i" /v /fo:csv /nh ^| findstr /r "wine"') do taskkill /pid %%a
)

Просто добавьте список возможных имен изображений, которые будут содержать заголовок, он будет только зацикливать их, как показано ниже, и не затрагивать другие процессы / задачи:

tasklist /fi "imagename eq notepad.exe"
tasklist /fi "imagename eq calc.exe"
tasklist /fi "imagename eq winword.exe"
tasklist /fi "imagename eq excel.exe"
...