Lassen Sie CMD geöffnet, nachdem die BAT-Datei ausgeführt wurde


168

Ich habe eine Fledermausdatei wie diese:

ipconfig

Dadurch werden die IP-Informationen auf dem Bildschirm ausgedruckt, aber bevor der Benutzer diese Informationen lesen kann, schließt sich CMD von selbst.

Ich glaube, dass CMD davon ausgeht, dass das Skript fertig ist, also schließt es.

Wie halte ich CMD offen, nachdem das Skript fertig ist?



4
@ RobKielty es ist die gleiche Frage in Ordnung - aber hier haben wir eine neue Antwort (was
meiner Meinung nach


@alfasin Ist das nicht dasselbe wie die Antwort von Rutger Nijlunsing?
Rob Kielty

@RobKielty Nö, meine Antwort ist nicht das gleiche wie es nicht verwenden , pausedas ist eine schöne Abhilfe (und das ist , warum ich diese Antwort upvoted) , aber nicht eines , das wirklich das Problem löst , weil , nachdem der Benutzer Treffer Enteroder Spacedas Fenster schließen. ..
Alfasin

Antworten:


162

Je nachdem , wie Sie den Befehl ausführen, können Sie setzen /knach cmddem Fenster offen zu halten.

cmd /k my_script.bat

Das einfache Hinzufügen cmd /kam Ende Ihrer Batch-Datei funktioniert ebenfalls. Dank an Luigi D'Amico , der dies in den Kommentaren unten gepostet hat.


14
Nach all Ihren Skripten in Ihrer Fledermausdatei - setzen Sie -> cmd / k
Luigi D'Amico

3
Beachten Sie, dass das Fenster immer noch geschlossen wird, wenn Ihr Programm syntaktische Fehler enthält, wenn Sie es per Doppelklick ausführen und cmd /kam Ende einfügen .
Tobias Feil

Dies erklärt nicht das Schließen von Cmd-Fenstern, wenn der Benutzer auf die Datei doppelklickt.
K - Die Toxizität in SO nimmt zu.

237

Fügen Sie pauseam Ende Ihrer .BAT-Datei ein.


7
Dies ist genau das, wonach ich gesucht habe, da ich die bat-Datei beim Start nicht über einen CMD-Befehl ausführe. +1
Hawkeye

3
Wenn Sie nach Ihrer Ausführung immer noch mit der bat-Datei interagieren möchten, ersetzen Sie die PAUSE durch nur cmd / k. Nachdem Ihre Skripte ausgeführt wurden, können Sie anschließend im selben Kontext noch manuelle Befehle ausführen
Luigi D'Amico,

Ich kann es nicht ertragen zu sehen, dass dies nicht der "Lösungs" -Kommentar für diese Frage war
Newhouse

57

Fügen Sie einfach @pauseam Ende hinzu.

Beispiel:

@echo off
ipconfig
@pause

Oder Sie können auch verwenden:

cmd /k ipconfig

5
Was macht das @ -Symbol? Gibt es einen Unterschied zwischen @pause und pause?
Demonicdaron

3
@demonicdaron Antwort zur Erklärung des @ Symbols: stackoverflow.com/a/21077142/2258
Richard Morgan

In diesem Fall sollte es jedoch keinen Unterschied machen.
Florian Leitgeb

Der Unterschied zwischen @pauseund pausekann visuell in dieser Antwort gesehen werden: stackoverflow.com/questions/17957076#60053224
ZygD

7

Das Hinzufügen pausevon (Windows 7) am Ende hat bei mir nicht funktioniert,
aber das Hinzufügen von cmd /kvor meinem Befehl hat funktioniert.

Beispiel:

cmd /k gradlew cleanEclipse

7

Wenn die .bat-Datei nicht über die Befehlszeile gestartet wird (z. B. Doppelklick).

echo The echoed text
@pause

at_pause

echo The echoed text
pause

Pause

echo The echoed text
cmd /k

cmd k

echo The echoed text & pause

und_pause


3

start cmd /khat die Magie für mich getan. Ich habe es tatsächlich zum Vorbereiten der Cordova Phonegap App verwendet. Es führt den Befehl aus, zeigt das Ergebnis an und wartet darauf, dass der Benutzer es schließt. Unten ist das einfache Beispiel

start cmd /k echo Hello, World!

Was ich in meinem Fall benutzt habe

start cmd /k cordova prepare

Aktualisieren

Sie könnten sogar einen Titel dafür haben, indem Sie verwenden

start "My Title" echo Hello, World!


1

Wenn Sie das Skript in der Befehlszeile starten, fügen Sie hinzu exit /b, um CMD geöffnet zu halten


Löst die Frage praktisch nicht, da das Ändern ipconfigund anderer integrierter Batch-Dateien eine sehr schlechte Idee ist .
RobinCTS

1

Fügen Sie in Windows '& Pause' am Ende Ihres Befehls in die Datei ein.


1

Ich war auch verwirrt darüber, warum wir cmdam Anfang ein hinzufügen, und ich fragte mich, ob ich zuerst die Eingabeaufforderung öffnen musste. Sie müssen lediglich den vollständigen Befehl zusammen mit eingeben cmd /k. Angenommen, Ihr Batch-Dateiname lautet "my_command.bat", wodurch der Befehl ausgeführt wird. javac my_code.javaDann sollte der Code in Ihrer Batch-Datei wie folgt lauten:

cmd /k javac my_code.java

Grundsätzlich ist es nicht erforderlich, die Eingabeaufforderung im aktuellen Ordner zu öffnen und den obigen Befehl einzugeben. Sie können diesen Code jedoch direkt in Ihrer Batchdatei speichern und direkt ausführen.


0
javac -d C:\xxx\lib\ -classpath C:\xxx\lib\ *.java

cmd cd C:\xxx\yourbat.bat

Mit dem zweiten Befehl wird Ihr Cmd-Fenster nicht geschlossen. Wichtig ist, dass Sie immer noch einen neuen Befehl eingeben können


0

Als Nebenbemerkung funktioniert dies auch, wenn ein Befehl direkt über die Suchleiste in Windows ausgeführt wird.

ipconfigWenn Sie z. B. direkt ausführen, wird das cmd-Fenster direkt geschlossen, nachdem der Befehl beendet wurde.

Geben Sie hier die Bildbeschreibung ein

Verwenden von cmd \k <command>nicht - was ich versucht habe, als ich diese Antwort fand.

Geben Sie hier die Bildbeschreibung ein

Es hat den zusätzlichen Vorteil, dass der Befehl, den Sie ausführen möchten, immer erkannt wird. Das Ausführen echo hello worldüber die Suchleiste funktioniert beispielsweise nicht, da dies kein Befehl ist, cmd \k echo hello worldfunktioniert jedoch einwandfrei .

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.