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

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

那行得通,除了我想做的就是在标题的开头和结尾都使用通配符。所以像:
taskkill /fi "Windowtitle eq \*X*" /im cmd.exe

但是我尝试了一下,但它不起作用。有什么我想念的东西吗?

最佳答案

不可以,过滤器开始处不允许使用通配符。

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)以结束该过程。

10-01 16:00