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-Key: 242853

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

Printed on: April 19, 2024 at 21:04 o'clock

Member: bastla
bastla Jul 06, 2014 at 15:56:37 (UTC)
Goto Top
Hallo spookypoof!

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

Grüße
bastla
Member: rubberman
rubberman Jul 06, 2014 at 17:47:55 (UTC)
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
Member: bastla
bastla Jul 06, 2014 at 18:01:31 (UTC)
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
Member: Snowman25
Snowman25 Jul 07, 2014 at 08:41:20 (UTC)
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
Member: pieh-ejdsch
Solution pieh-ejdsch Jul 08, 2014, updated at Jul 21, 2014 at 18:11:01 (UTC)
Goto Top
Moin,

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

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

Gruß Phil
Member: Snowman25
Snowman25 Jul 08, 2014 at 07:55:20 (UTC)
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
Member: spookypoof
spookypoof Jul 08, 2014 updated at 09:41:03 (UTC)
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
Member: Snowman25
Snowman25 Jul 08, 2014 at 10:51:09 (UTC)
Goto Top
Schonmal exit() oder die() am Ende des Skripts ausgeführt?
Member: spookypoof
spookypoof Jul 09, 2014 at 20:58:03 (UTC)
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
Member: Snowman25
Snowman25 Jul 10, 2014 at 15:13:16 (UTC)
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?
Member: SaschaRD
SaschaRD Jul 10, 2014 updated at 15:36:05 (UTC)
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