CMD Schließt sich nach öffnen einer BATCH Datei?
Immer wenn ich eine BATCH Datei öffnen möchte die ich selber programmiert habe, schließt sich cmd sofort
5 Antworten
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)
Ich weiss nicht was mir das sagen soll, mit nul am Ende wird die Konsole nicht offen gehalten
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
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.
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.
pause < nul