Jump to content
stefan4711

Prozeß erst nach Ende eines anderen starten

Recommended Posts

ich habe eine kleine Frage. Normalerweise soll man ja mittels wait, innerhalb eienr Batch, auf das Ende einer exe warten können, bevor die neue gestartet wird. Das scheint aber bei einer aus der Batch aufgerufenen cmd nicht zu funktionieren. Das ganze sieht in etwas so aus:

 

@Echo Off
TITLE Konsole

start "shell" /wait "Prog 1"
start "shell" /wait "C:\Windows\SysWOW64\cmd.exe"

start "" "Prog2"
start "" "Prog3"
EXIT

Neben der cmd wird noch ein weiteres Programm gestartet. Erst nach dem die aufgerufene CMD geschlossen wird, sollen die Programme 2 und 3 gestartet werden. Beim Schliessen erscheint in der UrsprungsBatch die Frage "Batchvorgang abbrechen j/n). Geht das vielleicht irgendwie anders, für sachdienliche Hinweise wäre ich sehr dankbar.



Lg und bleibt gesund
Stefan

Share this post


Link to post

Schau Dir mal die Hilfe für CMD an "CMD /?". Die Optionen /C oder /K sollten was für Dich sein, wenn ich Dich richtig verstanden habe.

 

Warum willst Du denn aus CMD eine weitere starten? Oder möchtest Du eine Batch-Datei ausführen?

 

Übrigens:

Wenn Du die gleiche Frage gleichzeitig in verschiedenen Foren stellst, sei doch bitte so nett und poste jeweils einen Link zu den anderen Foren, damit die Leute, die Dir helfen wollen, sich ihre Mühe nicht umsonst mehrfach machen müssen! 

Danke schon mal.

https://social.technet.microsoft.com/Forums/de-DE/bf93c7d8-9199-4e38-93af-c8ea5cd978cb/proze-erst-warten?forum=powershell_de

Edited by BOfH_666

Share this post


Link to post

...und wenn da ne Frage nach Abbrechen kommt, dann sehen wir hier grad zu wenig vom Originalcode. Das funktioniert dann nicht mit Forums-Support...

Share this post


Link to post
vor 10 Stunden schrieb BOfH_666:

Übrigens:

Wenn Du die gleiche Frage gleichzeitig in verschiedenen Foren stellst, sei doch bitte so nett und poste jeweils einen Link zu den anderen Foren, damit die Leute, die Dir helfen wollen, sich ihre Mühe nicht umsonst mehrfach machen müssen! 

Danke schon mal.

https://social.technet.microsoft.com/Forums/de-DE/bf93c7d8-9199-4e38-93af-c8ea5cd978cb/proze-erst-warten?forum=powershell_de

Das steht übrigens so in den Boardregeln, denen bei der Anmeldung zugestimmt wurde! :oh2:

Share this post


Link to post

Hallo,

 

bevor hier jeder noch mal einzeln beschwert, ich werde es beim nächsten mal beherzigen, es tut mir leid und ich kann es aber im nachhinein leider nicht mehr ungeschehen machen. Es geht darum eine CMD zu starten, und gleichzeitig 2 zusätzliche Programme, die aber beim beenden dieser, aus Speichergründen wieder entladen werden sollen, ganz einfach. Im Normalfall wird ja bei jedem Exe aufruf bis zum Ende gewartet, aber leider nicht in diesem Fall. Mit dem Aufruf  cmd /K bin ic leider auch nicht weitergekommen, die Batch wird weiter ausgeführt, bevor ich die CMD geschlossen habe. Vielleicht hat ja einer ne Idee

 

 

 

liebe Grüße

 

 

Stefan

Share this post


Link to post
vor 19 Minuten schrieb stefan4711:

bevor hier jeder noch mal einzeln beschwert, ich werde es beim nächsten mal beherzigen, es tut mir leid und ich kann es aber im nachhinein leider nicht mehr ungeschehen machen.

Einfach mal ne Rückmeldung zu geben, hätte ja auch schon gereicht. Kein Grund beleidigt zu reagieren.  ;-) 

vor 19 Minuten schrieb stefan4711:

Es geht darum eine CMD zu starten, und gleichzeitig 2 zusätzliche Programme, die aber beim beenden dieser, aus Speichergründen wieder entladen werden sollen, ganz einfach. Im Normalfall wird ja bei jedem Exe aufruf bis zum Ende gewartet, aber leider nicht in diesem Fall.

Darf ich fragen, was das für Programme sind? Starten die Programme vielleicht weitere Prozesse? Wäre Powershell ne Option?

Share this post


Link to post

Hi,

 

ich glaube das was du vor hast, habe ich mal mit VBScript erledigt und in der Batch dann per cscript / wscript ausgeführt. Generell wäre die Frage, warum Batch und nicht PowerShell?

'VBS

Option Explicit
'Variabeln deklarieren
Dim objWSH,objWMI,objWMIService,Proc,P,Weiter

'Erstellen der Objekte
Set objWSH = CreateObject("WScript.Shell")
objWSH.Run "<Pfad_zur_EXE>.exe", , true
'Hier geht es erst weiter wenn das Programm beendet wird

 

Gruß

Jan

 

P.S.: Das habe ich irgendwann mal gefunden und benutzt.

Share this post


Link to post

Ich bin nicht beleidigt, aber so wie ich das lese war das ja mein erster Rückantwortpost, und da habe ich mich entschuldigt, was nicht heisst dass ich beleidigt bin.

 

Zum Thema, es sind Hilfprogramme von unserer Firma, die im Zusammenhang mit einer administrattiven Shell gestartet werden sollen, welche aber auch nicht das Problem darstellen, ich habe es der Einfachheithalber mal simplifiziert mit Notepad und calc, so dass es nachvollziehbar ist. Calc darf erst starten, nach dem die Shell geschlossen wurde.

 

@Echo Off
start "" Notepad
Nircmd elevate cmd.exe /K C:\Windows\system32\cmd.exe"

:end
calc

Liebe Grüße

und Danke

 

Ps wenn es in Powershell eleganter gehen sollte gerne;) Ich ging jetzt aber davon aus dass das Problem für Experten sofort überschaubar wäre ist und dass es nur an meiner mangelden Kenntnis bestimmter Parameter liegen würde.

Edited by stefan4711

Share this post


Link to post
vor 1 Minute schrieb stefan4711:

 welche aber auch nicht das Problem darstellen,

Vielleicht ja eben doch. ;-) 

vor 1 Minute schrieb stefan4711:

ich habe es der Einfachheithalber mal simplifiziert mit Notepad und calc, so dass es nachvollziehbar ist.

Das könnte in diesem Fall aber genau das Problem sein. Es gibt Programme, die geben die Kontrolle direkt nach dem Start wieder an den aufrufenden Prozess zurück und laufen dann unabhängig weiter. Dann gibt es wieder Programm, die weitere Prozesse starten und dann die Kontrolle abgeben, während die "Kind-Prozesse" aber weiterlaufen.

Wenn ich folgenden Code auf rufe: 

Echo "Start des Super CMD scripts"
Notepad.exe
Echo "Notepad beendet"
Echo "Jetzt kommt Calc"
calc.exe

Dann erhalte ich genau das erwartete Verhalten. So sieht der output dann aus: 

C:\>c:\sample\test.cmd

C:\>Echo "Start des Super CMD scripts"
"Start des Super CMD scripts"

C:\>Notepad.exe

C:\>Echo "Notepad beendet"
"Notepad beendet"

C:\>Echo "Jetzt kommt Calc"
"Jetzt kommt Calc"

C:\>calc.exe

C:\>

Und der Rechner geht erst auf, wenn ich Notepad beendet habe.

Share this post


Link to post

@testperson

Ey voila, das mit dem VB das hats gebracht, recht herzlichen Dank. Hätte ich ja jetzt nicht gedacht, dass mit einer derart simplen Aufgabenstellung die gute alte Batch schon an Ihre Grenzen stösst

 

 

LG

 

Stefan

Share this post


Link to post

Nur so zur Vorsicht:

vor 26 Minuten schrieb testperson:

(Normale) User sollen mit administrativer Shell hantieren?

 

Und BTW: In PowerShell wäre es wohl noch einfacher (und zur Not kann man in einer Batch auch einfach die PowerShell.exe mit Command starten).

# https://docs.microsoft.com/en-us/powershell/module/microsoft.powershell.management/start-process?view=powershell-7
Start-Process ... -Wait

 

Edited by testperson

Share this post


Link to post

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.


Werbepartner:



×
×
  • Create New...