Bei der Suche nach der richtigen Methode zum Ausführen eines BAT-Skripts, bei der das cmd
Fenster nach Abschluss aktiv bleibt, habe ich erfahren, dass eine von zwei gängigen Methoden darin besteht, cmd /k file.bat
in das Skript einzuschließen, wobei „file.bat“ auf sich selbst verweist.
Ich verstehe zwar das funktionale Ergebnis des oben Gesagten, aber ich kann einfach nicht begreifen, wie es – konzeptionell – richtig ausgeführt und aufgelöst wird.
Aus meiner eigenen, ungebildeten Schlussfolgerung schließe ich, dass es etwas mit dem /k
Argument zu tun hat, dessen Funktion wie folgt erklärt wird:
Führt den durch die Zeichenfolge angegebenen Befehl aus, bleibt aber
Doch selbst wenn das Skript dadurch selbst eine Schleife verhindern kann, wie kann es seine eigene Ausführung nicht unterbrechen?
Entschuldigen Sie, wenn das super offensichtlich ist oder ich etwas Grundlegendes falsch verstehe, ich habe keine formale Ausbildung oder Schulung zu diesem Thema.
BEARBEITEN:
Nun, das war dumm von mir! Ich sah in der AntwortHierdass die Syntax so angeordnet war, wie ich es oben angegeben habe...wastutdas Skript in einer Schleife laufen zu lassen, also hätte ich es eigentlich erst selbst testen sollen, bevor ich blind und ohne richtigen Kontext daran glaubte (und ich sage auch immer „Vertrauen ist gut, Kontrolle ist besser“, was für ein Heuchler
Antwort1
Was die Frage „Warum?“ betrifft cmd
, gibt es ein paar gute Erklärungen aufPaketüberfluss- cmd
wird im Wesentlichen als interpretiert %ComSpec%
, was die Umgebungsvariable Ihres Systems für den vollständigen Speicherort von cmd.exe ist (normalerweise C:\Windows\System32\cmd.exe
).
Was den Kontext Ihrer Frage betrifft: Wenn Sie cmd /k yourbatfile.bat
yourbatfile.bat in sich haben, wird es einfach in einer Schleife laufen. Wenn Sie möchten, dass Ihr Fenster aus Gründen der Fehlerbehebung geöffnet bleibt, empfehle ich Ihnen dringend, einfach pause
am Ende/nach den Abschnitten, mit denen Sie Probleme haben, ein einzufügen.
Der Wortlaut für /k
isthier mal etwas andersda es heißt, dass es „zur Eingabeaufforderung zurückkehrt“ – im Wesentlichen /k
ist das Hinzufügen so, als würde man cmd.exe öffnen und verwenden, während das Fehlen von so /k
ist, als würde man einen Befehl aus einem Ausführen-Fenster ausführen.
Sie können dies testen, indem Sie „Ausführen“ öffnen ipconfig /all
– Ihr Fenster wird nach Abschluss sofort geschlossen ipconfig
. Wenn Sie „Ausführen“ jedoch öffnen cmd /k ipconfig /all
, werden Sie in Ihrem Fenster zu einer Eingabeaufforderung zurückgeführt.