我想编写一个简单的批处理文件,以杀死在窗口标题中包含某些文本的进程。现在我有:
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)以结束该过程。