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

时间:2014-10-24 16:37:19

标签: windows batch-file process cmd taskkill

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

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

这是有效的,除了我想要做的是在标题的开头和结尾都使用通配符。如下所示:

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

但是我尝试过这个并不起作用。我有什么遗失或者这是不可能的吗?

2 个答案:

答案 0 :(得分:9)

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

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和verbose格式检索任务列表(其中包括窗口标题作为输出中的最后一个字段)。

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

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

答案 1 :(得分:7)

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

START MyWindowTitle c:/MyProcess.exe 

这样很容易使用

再次杀死进程
taskkill /fi "WindowTitle eq MyWindowTitle"