Batch Datei kann mir wer helfen?

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:

Bild zum Beitrag

Ich weiß leider keine Lösung.

 - (Computer, Technik, Spiele und Gaming)

SirFabio413 
Beitragsersteller
 16.10.2021, 12:14

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.

gufrastella  16.10.2021, 17:16
@SirFabio413

Ja, wie gesagt, bei mir hat es auch geklappt, dass das Kommandozeilen-Fenster sich schloß.

SirFabio413 
Beitragsersteller
 16.10.2021, 12:08

Mit Abgeschlossen meinte ich "Alles ist vorbereitet! Viel Spass!!"
Und exit geht eben nicht. Das Fenster schliesst sich nicht.

SirFabio413 
Beitragsersteller
 16.10.2021, 12:12
@SirFabio413

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.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren

gufrastella  16.10.2021, 17:43

Kann die Zeitdauer des Time-Out evtl. zu kurz sein für den Start dieses Launchers und deshalb zu dem Problem führen?

Erzesel  16.10.2021, 18:26
@gufrastella

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...

SirFabio413 
Beitragsersteller
 16.10.2021, 12:09

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.


SirFabio413 
Beitragsersteller
 16.10.2021, 11:47

Also kann ich das nicht umgehen? also dass der Launcher dann unabhängig agiert?

Lezurex  16.10.2021, 11:51
@SirFabio413

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
SirFabio413 
Beitragsersteller
 16.10.2021, 12:06
@Lezurex

Die Idee ist sehr gut, nur kommt:

Der Befehl "CONSOLESTATE" ist entweder falsch geschrieben oder
konnte nicht gefunden werden.

Lezurex  16.10.2021, 12:18
@SirFabio413

Dann ist diese Methode wohl schon ziemlich alt, so wie die Website, wo ich das gefunden habe.

Eine andere Methode kenne ich nicht.

SirFabio413 
Beitragsersteller
 16.10.2021, 12:18
@Lezurex

Trotzdem vielen Dank, dass du dir Zeit genommen hast.

Lezurex  16.10.2021, 12:21
@SirFabio413

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.