muribln
Goto Top

Nur Prozess per Batch starten wenn nicht vorhanden

Hallo,

ich hab folgendes Problem.
Wie bekomme ich ein Start eines Prozesses hin mit vorheriger Prüfung ob dieser schon läuft.
Kleines Beispiel: In meiner Batch werden zwei .exe Dateien gestartet, jedoch soll die erste nur gestartet werden, wenn diese noch nicht gestartet wurde.
Ich hoffe es ist verständlich, ich dachte an eine For Schleife mit Abfrage der laufenden Prozesse oder so...

Ich bekomme es leider nicht hin face-confused

Kann mir einer helfen?

Content-Key: 20169

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

Printed on: April 25, 2024 at 13:04 o'clock

Member: Biber
Biber Nov 22, 2005 at 14:40:53 (UTC)
Goto Top
Moin MuriBln,

ich würde es in diesem Fall nicht über (eigene) For-Schleifen machen, sondern mit einem dieser vielen Prozesslister. Ich glaube, sogar M$ liefert schon irgendetwas mit, aber ich verwende meist das "psList"-Utiltily von www.sysinternals.com.

Mit den meisten Prozess-Listern kannst Du gezielt nach einem Prozess fragen und bekommt ein ErrorLevel zurück, falls Prozess nicht vorhanden. Damit reduziert sich Dein Programmieraufwand auf eine halbe Zeile. Beispiel: Test, ob Internet-Explorer ("IEXPLORE") gestartet:
iexploder not found!

(alles ok, kommt kein echo)
oder, in Deinem Fall

Falls Du einen Prozesslister benutzt, den Du nicht nach einzelnen Prozessen fragen kannst:

Thats all. HTH
Biber
[Edit] Habe noch mal meinen Prompt, bisher dargestellt als ">"-Zeichen, geändert in "$MyPrompt$", um Verwechslungen zu vermeiden. [/Edit]
Member: MuriBln
MuriBln Nov 22, 2005 at 18:32:01 (UTC)
Goto Top
Hi Biber,
danke für Deine Antwort, nur klappts leider noch nicht ganz..

Den PSList kenne ich, leider erstellt er eine Liste aller Prozesse auf dem Server.
Ich habe hier eine Terminal Server Umgebung und brauche nur die Taskliste des jeweiligen Benutzers. Daher habe ich mich entschlossen "Query Process" zu nutzen.

Wenn ich Deinen Beispielen folge habe ich leider diese Fehler.
Kommt der Fehler > "|" ist syntaktisch an dieser Stelle nicht verarbeitbar.

Was mache ich Falsch?
Member: Biber
Biber Nov 22, 2005 at 20:59:18 (UTC)
Goto Top
Hmm, MuriBln,

möglicherweise hast Du das Größerzeichen ">" mit eingegeben, mit dem ich nur meinen CMD-Prompt andeuten wollte.
Machs erst Schrittweise vom CMD-Prompt und kopier Dir dann die funktionierende Zeile in einen Editor bzw. in eine Batch-Datei.
(an CMD-Prompt)pslist
(erzeugt eine meterlange Liste)

PsList 1.26 - Process Information Lister
Copyright (C) 1999-2004 Mark Russinovich
Sysinternals - www.sysinternals.com

Process information for BIBERSBESTEN:

Name Pid Pri Thd Hnd Priv CPU Time Elapsed Time
Idle 0 0 1 0 0 10:01:42.062 0:00:00.000
System 4 8 48 564 0 0:02:06.602 0:00:00.000
IEXPLORE 1512 8 39 1216 50432 0:02:08.975 10:49:37.386
...
So oder ähnlich wird es auch bei Deinem Query-Tool sein - das hab ich nicht.

Step zwei: nur nachsehen, ob "IEXPLORE" dabei ist:
(am CMD-Prompt)pslist|find "IEXPLORE"
IEXPLORE 1512 8 39 1218 50432 0:02:09.526 11:00:50.834

Step drei: nur nachsehen, ob "IEXPLORE" dabei ist und den Output wegwerfen:
(am CMD-Prompt)pslist|find "IEXPLORE">nul
(am CMD-Prompt)echo %ErrorLevel%
(Output)0
0 bedeutet in dem Fall "gefunden", "1" würde "nicht gefunden" heißen.

Step 4:

bedeutet: wenn das Krams in der Klammer "(....)" einen ErrorLevel > 0 erzeugt, dann echo bla

Wenn Du es bis hierhin hast (mit Deinem Query-Tool), dann schaffst Du den Rest ohne mich. face-wink
Grüße Biber
Member: MuriBln
MuriBln Nov 24, 2005 at 14:35:44 (UTC)
Goto Top
Hi,
danke für Deine Geduld.

Jetzt hats auch bei mir geklappt...

Bye,
Muri
Member: Biber
Biber Nov 24, 2005 at 15:56:09 (UTC)
Goto Top
Moin MuriBln,
freut mich, dass es klappt.

Schönen Abend Dir
Biber
Member: MuriBln
MuriBln Nov 25, 2005 at 14:04:57 (UTC)
Goto Top
Rischtisch !

Danke noch mal.