CMD Schließt sich nach öffnen einer BATCH Datei?

5 Antworten

Von Experte Ben Sellin bestätigt

Hey,

am Ende deines Scripts (extra Zeile) muss der Befehl "pause" stehen, damit die Konsole nach Beendigung des Scripts geöffnet bleibt.

Mfg Jannick (L1nd)

Hier wurde schon auf "pause" hingewiesen

pause > nul < nul

Mit "> nul" wird die Meldung "Drücken Sie eine beliebige Taste . . ." nicht am Monitor ausgegeben sondern wird direkt an nul übergeben.

Mit "< nul> wird die Eingabe für nul nicht von der Tastatur sondern von nul gelesen.

Das Fenster wird trotzdem geschlossen!

Wenn es reicht ein neues Fenster zu öffnen:

Einfach mit

cmd

eine neue Instanz der Shell öffnen ....

Beispiel:

@echo off

echo. Tastendruck erwartet

echo.

echo.

pause

echo.

echo.

echo. Tastendruck simuliert

echo.

pause > nul < nul

cmd

:Beispielende

Woher ich das weiß:Berufserfahrung

Neben dem Umstand, das sich eine Batch nach getaner Arbeit beendet, wenn am Ende kein "Pause" steht, kann auch ein fataler Syntaxfehler das Fenster der Batch schließen.

Dergleichen Fehler sind beispielsweise:

Ein fehlender if-Parameter wenn eine Vergleichs-Variable leer ist und diese nicht gekapselt wird:

Set "myVar="
   rem das crasht
If %myVar%==wasAuchImmer (echo bla und blubb)

Unmaskierte Batch-Steuerzeichen in Eingaben sind ganz fies:

Set /p "myVar=gib volgendes ein: Max & Moritz:"
If %myVar%==wasAuchImmer (echo bla und blubb)

For-Loops in/do-Statment vergessen

For %%a (blubb)  (echo %%a)

Schließenden Klammer fehlt..

for %%a in (blubb) do (
Echo %%a

Goto und Sprungmarken:

Goto ins Leere

Goto :nichtVorhandenesLabel

Sprungmarken in Klammerblöcken:

for %%a in (blubb) do (
   Echo %%a
   :Ziel

   Echo irgendwas
)

Das sind nur ein paar Crasher. Bei den meisten Sachen kratzt sich gelegentlich sogar ein Batchkünstler wie ich am Kopf.

Das wahre Problem zeigt sich erst, wenn man "echo off" abschaltet und die Batch in einem bereits geöffnetem cmd-fenster aufruft. (in einer Batch sollte immer "exit /b" verwendet werden "exit" schließt auch alle übergeordneten Instanzen von Cmd!)

Batch kann ziemlich zickig und heimtückisch sein, wenn es um Fehler geht.

Manchmal genügt es schon, das ein neuer Dateiname ,welche Klammern enthält oder Max&Moritz.txt im Verzeichnis erzeugt wurde und schon stürzt eine vorher prima funktionierende Batch ab.

Leute welche, wie ich, sich viel mit Batch beschäftigen, haben zum Testen Demoordner mit den verrücktesten denkbaren Dateinamen und -Inhalten.

Bevor man eine Batch auf einen fremden Rechner loslässt, muss Diese unter allen Umständen funktionieren oder wenigstens sicherstellen, das kein Schaden entsteht. (es sei denn man will Schaden machen, aber auch dann wäre es oberpeinlich, wenn sie abk💩ckt)

Also öffne cmd, ziehe die Batch auf das Konsolfenster, drücke Enter.

Oder Poste beim nächsten mal einfach den Code Deiner Batch.

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

ist normal, sobald die Aufgabe/Ausführung abgeschlossen wurde, beendet sich das Skript, egal ob erfolgreich oder nicht.

Zum testen kannst du dieses einfach in der CMD öffnen anstatt per Doppelklick, dadurch schließt sich das Fenster nicht, da du die Konsole separat geöffnet hast. Wenn sich die Konsole aber generell nicht schließen soll, musst du am Ende den Befehl "pause" anhängen, dadurch wartet dein Skript auf eine Bestätigung bzw. das drücken der Eingabetaste und erst danach wird das Skript weiter ausgeführt bzw. in dem fall das danach keine Befehle mehr kommen, beendet.

Nun, es ist nicht zielführend, dass Du nicht erwähnst, wieDu sie startest.

Vermutung: Du startest sie mit einem Mausklick.

Lösung: Setze ans Exit der Batch ein pause.