代码之家  ›  专栏  ›  技术社区  ›  Bowi

taskkill windowtitle中的通配符

  •  2
  • Bowi  · 技术社区  · 6 年前

    当我想使用taskkill关闭以下两个(虚构的…)应用程序时。。。

    Two hello-sayers

    …我会用 taskkill /FI "WINDOWTITLE eq Hello*" .

    但这两个呢:

    Alcoholic programs

    taskkill /FI "WINDOWTITLE eq * wine" 费勒:这是一个很好的过滤器。 ,可以翻译为 错误:无法识别搜索筛选器。

    1 回复  |  直到 6 年前
        1
  •  2
  •   Gerhard    6 年前

    开头的通配符不起作用。你需要合并 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 对于no header,则在imagename中搜索字符串“wine”,如果找到,则按进程ID终止。

    要不是特定于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"