chrisdynamite
Goto Top

Per batch abfragen ob ein prozess läuft und erst weitermachen, wenn dieser beendet ist

Hallo

ich möchte eine Batch Datei erstellen, in welcher eine installationsroutine läuft und danach eine zweite starten soll. wie kann ich regeln, dass erst die setup2.exe startet, nachdem lt. taskmanager die setup1.exe beendet wurde?

grüße

Chris

call und wait bringen keinen effekt

Content-Key: 213101

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

Printed on: April 24, 2024 at 07:04 o'clock

Member: DerWoWusste
DerWoWusste Aug 01, 2013 at 10:46:56 (UTC)
Goto Top
Hi.

Einfach in der Batch hintereinanderschreiben, dann geschieht doch genau das.
Member: clSchak
clSchak Aug 01, 2013 updated at 11:37:45 (UTC)
Goto Top
Hi

nein @DerWoWusste das funktioniert nicht immer, z.B. wenn man Teamviewer installiert und danach die Config in die REG schreiben will muss Teamviewer definitiv aus sein, auch der Dienst, sonst nimmt der das nicht an.

@echo off
ping 127.0.0.1 -n 1 -w 3000 > nul
taskkill /f Prozessname
ping 127.0.0.1 -n 1 -w 3000 > nul
net stop servicename
ping 127.0.0.1 -n 1 -w 3000 > nul
nächster Programmaufruf

Warum die Pings? Damit eine kurze Wartezeit ausgeführt wird, damit der Prozess wirklich beendet ist, das braucht immer ein bischen Zeit bis der den Prozess richtig gekillt hat.

Wir haben das so gelöst, damit wir Teamviewer sauber installieren können (wir haben leider keine Coorp. Lizenz wo man das MSI File bekommt und müssen über die "Standard" EXE installieren.

Ähnliche Probleme bekommt man mit Installern, die mitten in der Installation das "Programm" wechseln, wenn z.B. über eine Setup.exe die Installation gestartet wird und mitten drin diverse MSI aufgerufen werden und die Setup.exe schon längst beendet ist - aber die Installation noch garnicht abgeschlossen wurde.

Edit Add:
Ansonsten, kannst die Tasklist auch abfragen:
tasklist /FI "IMAGENAME eq myapp.exe" 2>NUL | find /I /N "myapp.exe">NUL  
if "%ERRORLEVEL%"=="0" echo Programm is running  
gefunden @ http://stackoverflow.com/questions/162291/how-to-check-if-a-process-is- ...
Member: ChrisDynamite
ChrisDynamite Aug 04, 2013 at 10:08:21 (UTC)
Goto Top
danke für eure hilfe: folgende erkenntnisse habe zumindest ich anwenden können:

per CALL befehl VOR eine exe bsp: (\\servername\freigabename\verzweigung\ausführen.exe) warten die jeweiligen setups wirklich aufeinander. ABER seit vorsichtig denn:

ich hatte die Unschönheit, dass eine exe andere *.exe oder gar eine msi geöffnet hat. was passiert also: setup.exe startet und startet sofort die *.msi. danach schließt sich die exe und der prozess geht sofort weiter. wenn man dann eine bedingung erstellen möchte, dass bsp eine dateiversion abgeprüft wird und dann ein zweites programm installiert werden soll, funktioniert das scirpt nicht, denn die 1. installation ist nicht einmal fertig, so dass entsprechende ordner und ausführbare dateien erstellt wurden und die nächste steht schon in den startlöchern.

ABHILFE: sucht die letztendliche exe oder msi auf die verwiesen wird und staret diese mit silent parametern und mit dem CALL befehl vor der exe.