我最终想出了这个命令:
tasklist /V /NH | find "test"
它列出所有正在运行的进程以及“详细”信息(“窗口标题”是我们需要的,因此必须使用/V),跳过标题行,然后将其导入“find”以仅匹配某处包含“test”的进程。
当我输入这段内容时,我意识到它会检查 tasklist 输出的整行中的任意位置是否存在“test”,这不是它的本意(它应该只检查窗口标题部分),但这是次要的,因为它在实践中永远不会匹配,因为“test”实际上是一个带有几个空格的字符串,不太可能出现在该行的其余部分。
无论如何,上述命令运行起来确实需要几秒钟,这不是因为“find”的管道,因为我试过没有它。它只是在获取这些信息时非常缓慢,你可能会认为这些信息在 RAM 中很容易获得,你几乎可以得到答案前发出命令,但显然他们正在执行一些复杂的逻辑,似乎正在读取大量磁盘存储。(否则如何解释每次加载的秒数?)
阅读“任务列表”手册后,没有办法指定我只关心“窗口标题”,这就是我希望它输出的全部内容(这可能会更快)。
我确实注意到,如果通过特定的“图像”(EXE)进行过滤,速度会更快,但我不希望这样,因为这应该只检查/关心“窗口标题”(也称为“进程标题”)。
有什么好主意吗?
答案1
您可以使用 按窗口标题进行筛选/FI "WINDOWTITLE eq Window Name"
。尽管速度不是很快。
但是,使用 PowerShell 也可以实现相同的操作,而且速度更快:
get-process | where-object {$_.mainWindowTitle -like "test*"}
大约一秒钟内完成。