我有一个关于批量处理的问题,我还没有找到任何地方。我需要创建一个批处理文件,用于确定任务管理器中的应用程序下的任务是否正在运行并执行某个操作。我找到了很多关于如何判断进程是否正在运行的答案,但这种情况有点棘手。应用程序任务包含文本
管理员:[YODA] [oo.server.start]
但是任务管理器中的进程仅作为 cmd.exe 列出,遗憾的是,它不够具体,无法知道它是否是我想要的任务。我尝试过使用psexec,但是它给出的所有信息都没有用。据我所知,没有办法在cmd中找到正在运行的任务(而不是进程)。有什么想法吗?
答案 0 :(得分:2)
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}
如果您知道应用的完全标题,可以使用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
答案 1 :(得分:0)
您可以使用批处理文件中的title
命令设置标题,然后使用tasklist
确定具有该标题的窗口。