Batch-Datei anhalten bis ein gestartetes Programm beendet ist?

3 Antworten

Normalerweise ist das IMMER so - außer Du hast explizit die Batch-Datei so programmiert, dass das Programm nebenläufig gestartet wird oder das Programm startet einen neuen Prozess und beendet sich dann, so dass aus Sicht der Batch-Datei das gestartete Programm tatsächlich auch beendet IST, weil das Batch-File von diesem neuen Prozess nichts weiß. In diesem Fall wird's dann kompliziert und geht eigentlich nur über die Überwachung der Prozessliste.

Ich nehme mal an Du denkst Du musst ein Programm über den START-befehl starten?

Dies ist eher die Ausnahme, dieser wird eigentlich nur genutzt wenn ein Programm asynchron ausgeführt werden soll. in der Regel wird das Programm/Script wie jeder andere Batchbefehl aufgerufen. Dann wartet die Batch auch auf dessen Beendigung.

asyncdemo.cmd

start "" notepad
echo ich mach weiter
pause

normalDemo.cmd

notepad
echo ich habe gewartet
pause

Aaaaaaaaber es gibt auch Programme, welche sich scheinbar nicht an diese Regel halten und eben nicht brav warten.

sie tun es..., nur das es sich dabei um Wrapper/Laucher handelt, welche ihrerseits die eigentliche Anwendung starten und sich sofort beenden. Ein solches Programm ist der Windows-Calculator (calc.exe).

wrapperDemo.cmd

calc.exe
echo ich habe gewartet, aber calc.exe ist ein Wrapper
echo Das Fenster mit der Ueberschrift Rechner  ist  folgender Prozess:
timeout 2   &rem etwas Zeit zum starten geben  calc.exe startet calculator.exe startet ApplicationFrameHost.exe
tasklist /v  /fi "Windowtitle eq Rechner"
pause

Viele Spiele oder umfangreiche Anwendungen, wie Browser oder Office-Anwendungen starten über derartige Wrapper/Launcher.

Ein Anfänger kann gegen dergleichen nicht viel tun.

Eine etwas aufwändige Lösung wäre in einer Schleife zu schauen ob ein Fenstertitel noch in der Prozessliste ist.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

Das machen Batch-Dateien normal immer, außer das gestartete Programm geht in den Hintergrund...

... dann musst Du dir was programmieren.