3

我正在运行以下批处理脚本:

@echo off
tasklist /nh /fi "Windowtitle eq Export to PDF - DOORS" | find /i "Export to PDF - DOORS" >nul && (
echo PDF is running
) || (
echo PDF is not running
)

如果窗口当前处于活动状态,这只会回显“PDF 正在运行”。也许我使用了错误的命令(任务列表)。有没有办法在打开的窗口的完整列表中找到?

4

3 回答 3

4

我能够通过 VB 脚本获得所需的东西(感谢@JoshGuzman 的想法):

Set Word = CreateObject("Word.Application")
Set Tasks = Word.Tasks

For Each Task in Tasks
  If Task.Visible Then
    If Task.name = "Export to PDF - DOORS" Then
      Wscript.Echo "PDF is Running"
    Else 
      Wscript.Echo "PDF is not Running"
    End If
  End If
Next

Word.Quit

wscript myScript.vbs然后从命令提示符或批处理文件中调用 VB 脚本。

于 2012-09-04T17:57:09.033 回答
1

如果您愿意使用 Microsoft 的 PowerShell 而不是 cmd.exe(它也可以在我的旧 Windows XP 上运行,我只需要手动安装它;在较新的 Windows 版本上它是预安装的),您可以将WASP作为管理单元安装,然后然后这样做:

Select-Window | Format-Table processid,processname,title -AutoSize

AUSFÜHRLICH: Enumerating all windows

ProcessId ProcessName  Title
--------- -----------  -----
     7452 powershell   Windows PowerShell V2 (CTP3)
     2688 chrome       cmd - tasklist show all windows - Stack Overflow - Google Chrome
     2688 chrome       List all open window titles - PowerShellCommunity.org - Windows PowerShell Discussion Forums ...
     3572 TOTALCMD     Total Commander 8.0 - Scrum-Master.de  Inh. Alexander Kriegisch
     4152 eclipse      Java - dummy2/src/de/scrum_master/aop/log4j/Log4jAspect.aj - Eclipse Platform - Java, Scala, ...
     5608 Foxit Reader quick5A4.pdf - Foxit Reader
     2812 TextPad      TextPad - [C:\Dokumente und Einstellungen\Robin\Eigene Dateien\java-src\dummy2\bin\log4j.prop...

如您所见,两个 chrome 窗口都被列出,而板载命令Get-Process只列出每个进程一个窗口,就像tasklistcmd.exe

Get-Process | Where {$_.mainwindowtitle} | Format-Table id,name,mainwindowtitle -AutoSize

  Id Name         MainWindowTitle
  -- ----         ---------------
2688 chrome       cmd - tasklist show all windows - Stack Overflow - Google Chrome
4152 eclipse      Java - dummy2/src/de/scrum_master/aop/log4j/Log4jAspect.aj - Eclipse Platform - Java, Scala, Aspec...
5608 Foxit Reader quick5A4.pdf - Foxit Reader
7452 powershell   Windows PowerShell V2 (CTP3)
2812 TextPad      TextPad - [C:\Dokumente und Einstellungen\Robin\Eigene Dateien\java-src\dummy2\bin\log4j.properties]
3572 TOTALCMD     Total Commander 8.0 - Scrum-Master.de  Inh. Alexander Kriegisch
于 2012-09-01T09:32:48.567 回答
1

这是解决方案...

@echo off
tasklist /FI "WINDOWTITLE eq Export to PDF - DOORS" | find /i "Image Name" >nul && (
echo PDF is running
) || (
echo PDF is not running
)

这就是发生的事情

tasklist /FI "WINDOWTITLE eq myscript.bat - Notepad"

如果tasklist找到任何匹配项,则将输出:

Image Name                     PID Session Name        Session#    Mem Usage
========================= ======== ================ =========== ============
notepad.exe                   3212 Console                    1     22,704 K

所以你必须使用find /i "Image Name"因为如果myscript.bat - Notepad Windows Title 存在, Image Name就会出现。

哦,我差点忘了如果找不到匹配项,那么输出会:

信息:没有任务正在运行与指定的条件匹配。

请注意,“图像名称”一词不在此输出中。

希望这对您有所帮助。

于 2012-09-03T02:09:16.953 回答