在任务管理器中查找应用程序而不是进程的批处理文件

Posted

技术标签:

【中文标题】在任务管理器中查找应用程序而不是进程的批处理文件【英文标题】:Batch file that finds applications, not processes, in Task Manager 【发布时间】:2013-06-25 17:36:22 【问题描述】:

我有一个关于批处理的问题,但我在任何地方都找不到。我需要创建一个批处理文件来确定任务管理器中的应用程序下的任务是否正在运行并采取一定的行动。我找到了很多关于如何判断进程是否正在运行的答案,但这种情况有点棘手。应用程序任务包含文本

管理员:[YODA][oo.server.start]

但任务管理器中的进程仅作为 cmd.exe 列出,不幸的是,它不够具体,无法知道它是否是我想要的任务。我试过使用 psexec,但它给我的信息都没有帮助。据我所知,没有办法在 cmd 中找到正在运行的任务(而不是进程)。有什么想法吗?

【问题讨论】:

TaskMgr.exe 的“应用程序”似乎对应于打开的窗口。我不知道任何处理 Windows 的本机实用程序。为此,我们使用AutoIt。可以使用它构建可以处理窗口标题和进程的控制台应用程序。 【参考方案1】:

PowerShell 怎么样?

Get-Process | Select-Object MainWindowTitle

像这样批量使用它:

for /f "delims=" %%A in ('"PowerShell Get-Process ^| Select-Object MainWindowTitle ^| Select-String YODA"') do echo(%%A

示例输出:

@MainWindowTitle=Administrator:  YODA

没有 PowerShell...

如果您知道应用程序的确切标题,您可以使用tasklist

tasklist /FI "WINDOWTITLE eq Administrator:  YODA"

请注意,Administrator:YODA 之间有两个空格,因为 cmd.exe 有这个怪癖。

示例输出:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
cmd.exe                       5996 Console                    1      1,024 K

【讨论】:

感谢您的回答。是否可以使用正则表达式?管理员:[YODA][oo.server.start] 部分后跟时间戳,所以我想找到任何应​​用程序,第一部分后跟标题中的其他任何内容【参考方案2】:

您可以在批处理文件中使用title 命令设置标题,然后使用tasklist 确定具有该标题的窗口。

【讨论】:

我最终使用了 findstr 的一个变体,它工作但也感谢这篇文章

以上是关于在任务管理器中查找应用程序而不是进程的批处理文件的主要内容,如果未能解决你的问题,请参考以下文章

C# - 在任务管理器中打开应用程序作为第二个进程

dos中查找端口的PID,并在任务管理器中处理端口

如何在任务管理器中使用不同的进程名称(对于当前进程)名称?

任务管理器中的进程数最少应为多少?是啥?

为啥我的windows任务管理器中进程 映像名称中一大堆realplay.exe 而且cpu使用100%

VB.Net从任务管理器中隐藏进程[重复]