【问题标题】:Windows Batch file - taskkill if window title contains textWindows 批处理文件 - 如果窗口标题包含文本,则 taskkill
【发布时间】:2014-12-20 13:18:05
【问题描述】:

我想编写一个简单的批处理文件来终止在窗口标题中包含某些文本的进程。现在我有:

taskkill /fi "Windowtitle eq XXXX*" /im cmd.exe  

这很有效,除了我想做的是在标题的开头和结尾都使用通配符。就像这样:

taskkill /fi "Windowtitle eq \*X*" /im cmd.exe  

但我试过了,但它不起作用。有什么我遗漏的或者这不可能吗?

【问题讨论】:

    标签: windows batch-file process cmd taskkill


    【解决方案1】:

    不,过滤器的开头不允许使用通配符。

    for /f "tokens=2 delims=," %%a in ('
        tasklist /fi "imagename eq cmd.exe" /v /fo:csv /nh 
        ^| findstr /r /c:".*X[^,]*$"
    ') do taskkill /pid %%a
    

    这将检索 csv 和详细格式的任务列表(将包括窗口标题作为输出中的最后一个字段)。

    列表由findstr 过滤,使用正则表达式搜索最后一个字段中的指定文本(X)。

    如果任何行与过滤器匹配,for 将对其进行标记,检索将在 taskkill 中用于结束进程的第二个字段(PID)。

    【讨论】:

    • 搜索了几个小时后,这是迄今为止最好的方法!谢谢你,MC ND!
    • 终于找到了一个适合我的解决方案。谢谢!
    【解决方案2】:

    在您自己从批处理文件启动命令窗口的特殊情况下,您可以使用命令指定窗口标题

    START MyWindowTitle c:/MyProcess.exe 
    

    这样很容易再次杀死进程

    taskkill /fi "WindowTitle eq MyWindowTitle"
    

    【讨论】:

    • 不错!这行得通。注意:如果您的标题前面有“管理员:”,请在此处查看此答案:stackoverflow.com/questions/10948235/…
    • 完美而简单的例子。谢谢
    • 您必须在 MyWindowTitle 周围加上双引号才能使命令正常工作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-08-19
    • 1970-01-01
    • 2010-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-10
    相关资源
    最近更新 更多