Batch Datei kann mir wer helfen?
Hallo
Ich habe ein Batch-file geschrieben, dass die Datei: "MinecraftLauncher.exe" öffnet.
Wenn der Launcher offen ist, dann bleibt das CMD Fenster offen. Ich möchte aber dass es sich schliesst, sobald der Launcher offen ist. (alles durchgelaufen ist)
Ich habe es bereits mit "exit" und allem Möglichem versucht, doch das CMD Fenster bleibt solange offen, bis ich den Launcher schliesse.
Kann mir jemand Helfen?
So sollte es sein:
1.Batchfile öffnen
2. Launcher startet
3.Wenn Launcher offen, dann CMD Fenster schliessen
4.Launcher soll offen bleiben
(Timeout sorgt dafür, dass die Meldung "Abgeschlossen" erst nach dem offenen Launcher angezeigt wird)
Und hier noch den Code:
@echo off
start "" "C:\Program Files (x86)\Minecraft Launcher\MinecraftLauncher.exe\"
echo.
echo ----------------------------------
echo Minecraft Preset wird gestartet:
timeout /t 8 >nul
echo.
echo Alles ist vorbereitet! Viel Spass!!
echo -----------------------------------
echo.
exit
4 Antworten
Hallo SirFabio413!
Soweit ich es sehe, ist die Commanddatei korrekt, d. h. sie tut das, was darin steht. (habe es mit einem anderen Programm, das gestartet wird, auf Win 10 probiert.)
Was ich ergänzen würde, wäre ein Timeout nach der Meldung "Alles ist vorbereitet! Viel Spass!!".
Außerdem schreibst du oben etwas von einer Meldung "Abgeschlossen", die aber in deinem hier dargestellten code gar nicht auftaucht.
Mein Vorschlag:
@echo off
start "" "C:\Program Files (x86)\Minecraft Launcher\MinecraftLauncher.exe\"
echo.
echo ----------------------------------
echo Minecraft Preset wird gestartet:
timeout /t 8 >nul
echo.
echo Alles ist vorbereitet! Viel Spass!!
echo -----------------------------------
timeout /t 8 >nul
echo.
exit
LG
gufrastella
Ergänzung:
Hier ein Screenshot von meiner Batch als Datei und als Fenster, das sich schließt nach dem zweiten Time-Out:
Ich weiß leider keine Lösung.

Ja, wie gesagt, bei mir hat es auch geklappt, dass das Kommandozeilen-Fenster sich schloß.
Mit Abgeschlossen meinte ich "Alles ist vorbereitet! Viel Spass!!"
Und exit geht eben nicht. Das Fenster schliesst sich nicht.
Exit geht bei jeder anderen Batch Datei also wenn ich z.b einen link öffne dann geht "exit". Jedoch bei meinem Beispiel mit dem MC Launcher eben nicht. Ich weiss aber nicht wieso...
Die Batch tut was sie soll und schließt.
Ich kenne Deinen Laucher leider nicht.
Ich habe eher den Verdacht, dass der Laucher "unsauber" programmiert ist.
Viele .Net Anwendungen starten mit einer Console, welche die eigentliche grafische Oberfläche startet. Gut programmierte Anwendungen verbergen dieses Consolfenster. ...Aber einige eben nicht😝.
Ich bin leider gerade Unterwegs und kann so nicht probieren, ob es möglich ist "von außen" das Problem zu beheben.
Normalerweise ist das die Aufgabe des Entwicklers.
Kann die Zeitdauer des Time-Out evtl. zu kurz sein für den Start dieses Launchers und deshalb zu dem Problem führen?
Nee...
Start "" "...." startet Programme als parallelen Thread der von der Batch entkoppelt läuft. Damit entfällt jegliche Interaktion mit der Batch.
Das neben der GUIanwendung geöffnete Consolenfenster ist typisch für Programmumgebungen wie Java oder .Net . Normalerweise verstecken Programmierer die Console das diese keine relevante Bedeutung hat, außer die Benutzeroberfläche zu starten.
Je nach Entwicklungsumgebung wird das "verbergen" der Console automatisch erledigt oder muss von Hand als Funktion aufgerufen werden. Bei Letzterem schlampen manche Programmierer oder wissen schlicht nicht wie es geht. Die Dokumentation diesbezüglich hüllt sich in Schweigen.
Das Problem liegt eindeutig beim Laucher. Das dieser von Profis entwickelt wurde sagt nichts über die Qualität aus...
Also der Launcher ist der offizielle Launcher vom Spiel Minecraft. Möchte über die Batch Datei eben diesen Launcher starten, was auch geht. jedoch geht dann das CMD fenster nicht zu nachdem er geöffnet ist.
Normalerweise geht das meines Wissens nicht, nur sehr umständlich.
Auf Linux geht dies viel einfacher, indem man einfach ein & an den Befehl hängt.
Vielleicht hilft dir dies hier weiter: https://superuser.com/a/872858/1378911
Ansonsten ist dieses Verhalten völlig korrekt. Du führst einen Prozess von einem anderen Prozess aus. Der Mutterprozess (in diesem Falle das Batch-Script) bleibt dann so lange offen, bis der Kindesprozess (der Launcher) wieder geschlossen wird.
Also kann ich das nicht umgehen? also dass der Launcher dann unabhängig agiert?
Du kannst sonst das hier mal versuchen vor dem Launcher auszuführen:
CONSOLESTATE /Hide
Das Kommandozeilenfenster sollte dann nur kurz aufblinken.
Zum wieder anzeigen sollte dies hier funktionieren:
CONSOLESTATE /Show
Die Idee ist sehr gut, nur kommt:
Der Befehl "CONSOLESTATE" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.
Dann ist diese Methode wohl schon ziemlich alt, so wie die Website, wo ich das gefunden habe.
Eine andere Methode kenne ich nicht.
Trotzdem vielen Dank, dass du dir Zeit genommen hast.
Vielleicht geht es irgendwie mit Powershell, damit kenne ich mich aber nicht aus (bin halt primärer Linux-Nutzer).
Ich kann empfehlen das man die selbst erstellte Batch-Datei mit diesem Tool https://bat2exe.net/ in eine EXE-Datei umwandelt. Dann müsste es so gehen wie sie es wollen.
Guck mal: Bei dem Code geht "exit" einwandfrei:
@echo off
start Chrome.exe
timeout /t 1
echo.
echo Fertig!
timeout /t 1
exit
Bei meinem Code mit dem Launcher jedoch nicht.