16

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

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

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

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

但我试过这个,它不起作用。有什么我想念的还是不可能的?

4

2 回答 2

13

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

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在最后一个字段中搜索指示的文本 (the )。

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

于 2014-10-24T16:52:24.750 回答
8

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

START MyWindowTitle c:/MyProcess.exe 

这样就很容易再次使用

taskkill /fi "WindowTitle eq MyWindowTitle"
于 2015-11-27T08:03:06.873 回答