Jump to content

Prozeß erst nach Ende eines anderen starten


Direkt zur Lösung Gelöst von testperson,
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

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

Link zu diesem Kommentar

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

bearbeitet von BOfH_666
Link zu diesem Kommentar
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:

Link zu diesem Kommentar

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

Link zu diesem Kommentar
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?

Link zu diesem Kommentar
  • Beste Lösung

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.

Link zu diesem Kommentar

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.

bearbeitet von stefan4711
Link zu diesem Kommentar
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.

Link zu diesem Kommentar

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

 

bearbeitet von testperson
Link zu diesem Kommentar
Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...