Список задач показать все окна

Я запускаю следующий пакетный скрипт:

@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 работает", если окно в настоящее время активно. Возможно, я использую неправильную команду (список задач). Есть ли способ найти в полном списке открытых окон?

3 ответа

Решение

Я смог получить то, что мне было нужно, с помощью скрипта 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

Затем вызовите скрипт VB с wscript myScript.vbs из командной строки или командного файла.

Это решение...

@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"

Если в списке задач найдены совпадения, будет выведено:

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

Таким образом, вы должны использовать find / i "Имя изображения", потому что Имя изображения появится, если myscript.bat - Notepad Windows Title существует.

О, я почти забыл, если не найти совпадений, то результат будет:

ИНФОРМАЦИЯ: Нет задач, выполняющих указанные критерии, которые соответствуют.

Обратите внимание, что слова "Имя изображения" не включены в этот вывод.

Надеюсь, это поможет вам.

Если вы хотите использовать 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 перечисляет только одно окно на процесс, как tasklist в cmd.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
Другие вопросы по тегам