Die Methode, die ich derzeit verwende und die voller Fehler steckt, ist:
tasklist /FI "WINDOWTITLE eq BLABLABLA" /NH
Der obige BLABLABLA-Teil ist der aktuelle genaue Prozesstitel. (Lassen Sie mich erst gar nicht darauf eingehen, dass er keine eigenen Anführungszeichen erhält und daher nicht einfach/richtig entkommen/gesichert werden kann.)
Das Problem dabei ist, dass sobald sich der Prozesstitel auch nur um ein Zeichen unterscheidet, dieser Logik zufolge als ein anderes Skript angesehen wird. Ich habe zum Beispiel ständig alle möglichen hilfreichen Hinweise zum Fenster-/Prozesstitel hinzugefügt, wie zum Beispiel:
Actual title (5 seconds left...)
Und:
[FINISHED] Actual title
Und:
Actual title (4 / 9 items left)
Und:
Actual title (35% downloaded)
Und so weiter. Sie verstehen, was ich meine. Der Prozesstitel ändert sich häufig, daher ist er nicht zuverlässig, um nach dem eindeutigen Skript zu suchen.
Die einzige andere Möglichkeit, die ich gefunden habe, besteht darin, auf etwas zu verweisen, das sie „IMAGENAME“ nennen (was anscheinend „ausführbarer Name“ bedeutet):
tasklist /FI "IMAGENAME eq php.exe" ...
Das ist natürlichnoch schlimmerda es einfach jedes beliebige php.exe-Skript auflistet!
Bei meinen Experimenten mit dem Befehl „tasklist“ (unter Verwendung der Ausgabe „--verbose“ und Lesen des Handbuchs) werden der Dateipfad oder eine eindeutige ID pro Datei oder ähnliches nicht erwähnt.
Warum kann ich so etwas nicht tun?
tasklist /FI "FILEPATH eq BLABLABLA" /NH
?
Ich habe darüber nachgedacht, die laufenden Skripte selbst in der Datenbank zu verfolgen, aber das scheint schrecklich ineffizient und auch unzuverlässig, wenn die Dinge nicht genau wie geplant laufen und so weiter. Es wäre definitiv am besten, einen vom Betriebssystem bereitgestellten Befehl zu verwenden (es sei denn, PHP hat dies schließlich integriert).
Ich weiß, dass der Filter "eq" ein Asterisk akzeptiertam rechten Ende, aber das hilft mir aus den oben genannten Gründen nicht.
Muss ichWirklichhabe ich keine andere Wahl, als die komplette Tasklistenausgabe zu analysieren und zu versuchen, alle „dynamischen“ Teile der Prozesstitel zu entfernen, damit ich die Anzahl der laufenden Skripte mit dem „gleichen“ Prozesstitel wie das Skript, das den Code ausführt, zählen kann? Es fühlt sich unglaublich hackig und dumm an. Eskann nichtder richtige Weg sein...
(PS: Wissen Sie, ich bin immer wieder verblüfft, wie viele „offensichtliche“ (anscheinend nur für mich) Dinge und Funktionen einfach fehlen. Unter Windows und Linux ist es dasselbe. Dinge, die ich als „absolutes Minimum“ betrachte, werden von allen anderen irgendwie als überflüssig/nutzlos angesehen. Das bringt mich wirklich zum Nachdenken …)
Antwort1
Sie können die Ergebnisse verfeinern, indem Sie Folgendes verwenden:
tasklist /fi "imagename eq php.exe" /v | find /i "Actual title"