138701
Goto Top

Tasklist überprüfen

Hallo zusammen,

Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird?
Also nicht so dass er im Hintergrund ausgeführt wird, sondern ein offenes Fenster läuft.

Content-Key: 418571

Url: https://administrator.de/contentid/418571

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: 138810
138810 16.02.2019 aktualisiert um 15:32:19 Uhr
Goto Top
sondern ein offenes Fenster läuft.
Nur mit tasklist nicht, das kann zwar über den Filter mit /FI "WINDOWTITLE eq Skype" danach suchen, aber es meldet den Prozess auch wenn kein Fenster existiert. Du kannst es aber so machen:
@echo off
powershell -Executionpolicy ByPass -NoProfile -Command "if(get-process -Name Skype | ?{$_.MainWindowTitle -ne ''}){exit 0}else{exit 1}" && echo Skype mit Fenster aktiv. || echo Kein Skypefenster aktiv.  
Noch ein Grund mehr Batch den Rücken zu kehren und sich mal mit der Powershell oder anderen Skriptsprachen auseinander zu setzen. Batch wurde einfach nicht für die GUI Steuerung entworfen.
Mitglied: Penny.Cilin
Penny.Cilin 16.02.2019 um 15:31:21 Uhr
Goto Top
So langsam stellt sich mir echt die Frage, ob Du dich zunächst mal mit dem Betriebssystem beschäftigen solltest.
Du bätsch hier rum. Hast keine Ahnung von gängigen Befehlen und erwartest Lösungen.

Lesefutter Windows Befehle.

Und hier etwas Lesefutter bzgl. Windows Batch:

Gruss Penny
Mitglied: Penny.Cilin
Lösung Penny.Cilin 16.02.2019 aktualisiert um 16:04:20 Uhr
Goto Top
Zitat von @138810:

sondern ein offenes Fenster läuft.
Nur mit tasklist nicht, das kann zwar über den Filter mit /FI "WINDOWTITLE eq Skype" danach suchen, aber es meldet den Prozess auch wenn kein Fenster existiert. Du kannst es aber so machen:
Stattdessen nimmt man
tasklist /FI "sessionname eq skype.exe"  
Oder wie Du geschrieben hast Powershell.

Gruss Penny
Mitglied: 138810
138810 16.02.2019 aktualisiert um 16:16:22 Uhr
Goto Top
Zitat von @Penny.Cilin:
Stattdessen nimmt man
tasklist /FI "sessionname eq skype.exe"  
Nein, das bringt nichts. Das kann nicht unterscheiden ob ein Fenster von Skype dem User gerade angezeigt wird und offen ist oder ob es nur im Hintergrund läuft.

Zitat des TO:
Also nicht so dass er im Hintergrund ausgeführt wird, sondern ein offenes Fenster läuft.
Mitglied: Penny.Cilin
Penny.Cilin 16.02.2019 um 16:16:51 Uhr
Goto Top
Zitat von @138810:

Zitat von @Penny.Cilin:
Stattdessen nimmt man
tasklist /FI "sessionname eq skype.exe"  
Nein, das bringt nichts. Das kann nicht unterscheiden ob ein Fenster von Skype offen ist oder ob es nur im Hintergrund läuft.
Wenn er den Prozeßnamen kennt schon. Denn er hat geschrieben:
Wie kann ich in Batch überprüfen, ob gerade der Prozess "Skype.exe" ausgeführt wird?
Also weiß er wie der Prozeß heißt.Somit kann er diesen abfragen.

Gruss Penny
Mitglied: 138810
138810 16.02.2019 aktualisiert um 16:23:55 Uhr
Goto Top
Klar, aber du hast die Bedingung darunter vergessen:
Also nicht so dass er im Hintergrund ausgeführt wird, sondern ein offenes Fenster läuft.
Skype läuft ja im Tray weiter wenn die Fenster geschlossen sind und Tasklist kann das nunmal nicht unterscheiden, die Powershell schon!
Mitglied: Penny.Cilin
Penny.Cilin 16.02.2019 aktualisiert um 16:43:25 Uhr
Goto Top
Dazu kann man den Sitzungsnamen verwenden.
Beispiel bei getartetem Notepad.exe:
tasklist /fi "imagename eq notepad.exe"  

Wenn eine Anwendung gestartet ist, wird diese in der Regle unter dem Sitzungsnamen "Console" angezeigt.

@schleim: Um es abzuschliessen: ich stimme Dir zu, dass mit Powershell, wie mit anderen Skriptsprachen (Perl, REXX, vbs, u.w) wesentlich mehr und bessere Möglichkeiten gibt. Trotzdem kann man vieles mit Batch erledigen, wenn auch mit vielen vielen Klimmzügen.

Gruss Penny
Mitglied: 138810
138810 16.02.2019 aktualisiert um 17:08:02 Uhr
Goto Top
Zitat von @Penny.Cilin:

Dazu kann man den Sitzungsnamen verwenden.
Beispiel bei getartetem Notepad.exe:
tasklist /fi "imagename eq notepad.exe"  

Wenn eine Anwendung gestartet ist, wird diese in der Regle unter dem Sitzungsnamen "Console" angezeigt.

Probier es doch bitte selbst aus: Starte Skype, und schließe alle Fenster von Skype und lass es aber im Hintergrund (nur im Tray) weiterlaufen.
Nun lass dein Tasklist laufen, es zeigt dir trotz geschlossener Fenster den Prozess an und das ist ja genau das was der TO offensichtlich nicht möchte, er möchte nur ein Ergebnis haben wenn ein Fenster von Skype offen ist und dem User angezeigt wird und nicht das der Prozess überhaupt läuft, und genau darauf will ich hier hinaus face-wink.
Mitglied: Penny.Cilin
Penny.Cilin 16.02.2019 um 17:11:34 Uhr
Goto Top
Nixx für ungut, ich nutze kein Skype. Spionagesoftware nutze ich nicht. face-wink
OK, was zeigt
tasklist /v
dann für Prozesse an, wenn es nur im Tray läuft. Bzw. wenn ein Fenster angezeigt wird.

Ich kann das derzeit nicht nachvollziehen, weil ich eine solche Konstellation nicht habe.
Für eine Aufklärung bin ich dankbar.
Eventuell geht es über die Abfrage des Fenstertitels? Weil er will ja diese Abfrage.

Gruss Penny
Mitglied: 138810
138810 16.02.2019 aktualisiert um 17:34:08 Uhr
Goto Top
Zitat von @Penny.Cilin:

Nixx für ungut, ich nutze kein Skype. Spionagesoftware nutze ich nicht. face-wink
OK, was zeigt
tasklist /v
dann für Prozesse an, wenn es nur im Tray läuft. Bzw. wenn ein Fenster angezeigt wird.
Ich habe es selbst getestet, Ergebnis steht oben.
Ich kann das derzeit nicht nachvollziehen, weil ich eine solche Konstellation nicht habe.
Das versuche ich dir ja gerade zu verklickern face-smile.
Für eine Aufklärung bin ich dankbar.
Eventuell geht es über die Abfrage des Fenstertitels? Weil er will ja diese Abfrage.
Habe ich oben in meinem ersten Post schon geschrieben das es damit auch nicht geht weil Tasklist den Titel auch bei geschlossenen Fenstern anzeigt. Die Powershell hingegen macht die Auswertung richtig, hier ist bei geschlossenen Fenstern der Window-Titel leer und erst bei einem existenten Fenster wird dieser gefüllt.