spookypoof
Goto Top

Wenn Prozess läuft kann Batch den Code nicht weiterverarbeiten?

Hallo,

Ich hab ein Problem. Ich hab z.B. zwei verschiedene Menü's und im zweiten Menü starte ich eine Datei. Der Prozess muss am laufen sein. Aber wenn er am laufen ist macht die Batch im Code nicht mehr weiter.. So kann er auch nicht mehr zum "hauptmenue" jumpen. Kann man da etwas machen?

z.B.
@echo off
:hauptmenue
echo Du befindest dich im Hauptmenue.
pause >nul
goto zweitesmenue

:zweitesmenue
start beispielprog.exe
echo Diesen Text kann man nicht sehen, weil der Prozess noch läuft.
pause >nul
goto hauptmenue

Grüße
spookypoof

Content-ID: 242853

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

Ausgedruckt am: 23.11.2024 um 07:11 Uhr

bastla
bastla 06.07.2014 um 17:56:37 Uhr
Goto Top
Hallo spookypoof!

Soferne Du "start" überhaupt benötigst, verwende "start /wait" ...

Grüße
bastla
rubberman
rubberman 06.07.2014 um 19:47:55 Uhr
Goto Top
Hallo bastla,

wenn ich spookypoof richtig verstanden habe, wäre das /WAIT genau kontraproduktiv, weil das Programm asynchron laufen soll. Andererseits kann ich das Problem ohne /WAIT weder verstehen noch nachstellen face-plain

Grüße
rubberman
bastla
bastla 06.07.2014 um 20:01:31 Uhr
Goto Top
Hallo rubberman!
wenn ich spookypoof richtig verstanden habe, wäre das /WAIT genau kontraproduktiv
Jetzt wo Du's sagst - leider zu oberflächlich gelesen. face-sad

Unter diesem Gesichtspunkt sehe ich allerdings das Problem auch nicht ...

Grüße
bastla
Snowman25
Snowman25 07.07.2014 um 10:41:20 Uhr
Goto Top
Hallo @cyrano330,

Zitat von @spookypoof:

Ich hab ein Problem. Ich hab z.B. zwei verschiedene Menü's und im zweiten Menü starte ich eine Datei. Der Prozess
muss am laufen sein. Aber wenn er am laufen ist macht die Batch im Code nicht mehr weiter.. So kann er auch nicht mehr zum
"hauptmenue" jumpen. Kann man da etwas machen?

Du könntest versuchen, den Prozess über Powershell und Start-Process zu starten. Oder, wenn das nicht funktioniert über Start-Job.
Mit Start-Job kannst du ein Programm im Hintergrund ausführen. In etwa so:
start-job -scriptblock {start-process beispielprog.exe}

Gruß,
@Snowman25
pieh-ejdsch
Lösung pieh-ejdsch 08.07.2014, aktualisiert am 21.07.2014 um 20:11:01 Uhr
Goto Top
Moin,

Start "" /b "beispiel.exe"  
Echo hier gleich weiter

Die cmd wird erst beendet, wenn der Kindprozess beendet ist.

Gruß Phil
Snowman25
Snowman25 08.07.2014 um 09:55:20 Uhr
Goto Top
Zitat von @pieh-ejdsch:

Die cmd wird erst beendet, wenn der Kindprozess beendet ist.

Liest hier eigentlich niemand auser mir und rubberman?
@spookypoof möchte, dass die Batch __unabhängig__ vom aufgerufenen Programm weiterläuft. Also das Programm startet und die Batchausführung __nicht__ pausiert wird.

Gruß,
@Snowman25
spookypoof
spookypoof 08.07.2014 aktualisiert um 11:41:03 Uhr
Goto Top
Erstmal, danke für eure Hilfe!

Also, um etwas klarheit zu bringen, erkläre ich mal was ich vor hatte.
Ich führe eine php mit dem Programm php.exe aus. Die php startet den VLC. Das Problem ist, wenn ich die VLC beende, beendet sich die php.exe nicht. Der Prozess vlc.exe gehört ja nicht zu dem Prozess-Tree der php.exe. Sondern die test.php startet den VLC.

Der Befehl sieht so aus:
php.exe -f test.php

Das heißt die Batch kann den Code nicht mehr weiterführen. Sie steckt da fest. Habe schon alles versucht nach dem Befehl, dass die Batch den Prozess beenden soll, doch ohne Erfolg.

PS: Wäre es möglich einen Code in der test.php einzubauen, der die php.exe beendet?

Grüße
spookypoof
Snowman25
Snowman25 08.07.2014 um 12:51:09 Uhr
Goto Top
Schonmal exit() oder die() am Ende des Skripts ausgeführt?
spookypoof
spookypoof 09.07.2014 um 22:58:03 Uhr
Goto Top
@Snowman25
hat leider nicht geklappt.

Eine andere Möglichkeit wäre doch, z.B. wenn der VLC geschlossen ist, soll die test.php die php.exe beenden. Sodass der die Batch den Code weiterverarbeiten kann. Geht das?


Grüße
spookypoof
Snowman25
Snowman25 10.07.2014 um 17:13:16 Uhr
Goto Top
Zitat von @spookypoof:

Eine andere Möglichkeit wäre doch, z.B. wenn der VLC geschlossen ist, soll die test.php die php.exe beenden. Sodass der
die Batch den Code weiterverarbeiten kann. Geht das?


Das schon ausprobiert?
SaschaRD
SaschaRD 10.07.2014 aktualisiert um 17:36:05 Uhr
Goto Top
Hallo Spookypoof

Du kannst mit dem Befehl TASKLIST eine Abfrage erstellen.

tasklist /fi "imagename eq vlc.exe" | find "vlc.exe"  
Um das ganze dann zu schließen einfach eine IF-Bedingung hinterher jagen.
IF ERRORLEVEL =1 (
echo VLC läuft nicht
) ELSE (
echo VLC läuft
taskkill /f /t /im vlc.exe
taskkill /f /t im php.exe
echo VLC und PHP gekillt
)

Gruß, Sascha