Windows 批处理文件 - 如果窗口标题包含文本,则 taskkill

Posted

技术标签:

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

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

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

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

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

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

【问题讨论】:

【参考方案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"

【讨论】:

不错!这行得通。注意:如果您的标题前面有“管理员:”,请在此处查看此答案:***.com/questions/10948235/… 完美而简单的例子。谢谢 您必须在 MyWindowTitle 周围加上双引号才能使命令正常工作

以上是关于Windows 批处理文件 - 如果窗口标题包含文本,则 taskkill的主要内容,如果未能解决你的问题,请参考以下文章

使用进度在 Windows 命令行上复制文件

双击时如何使Windows批处理文件暂停?

在 Windows 10 批处理文件中,有没有办法只提取最后的总文件数?

Windows 批处理文件可以确定自己的窗口名称吗?

重定向 Windows 批处理文件命令的回显

通过批处理文件运行 PowerShell [System.windows.forms.messagebox] 而不显示 cmd 窗口