Gibt es eine Tastenkombination, mit der die Ausgabe eines CMD-Fensters angehalten werden kann, während es ausgeführt wird?


14

Ich stecke mitten in der Ausführung eines Batch-Skripts, das sehr lange dauert und dessen Ausgabe mit einer unlesbaren Geschwindigkeit vorbeizieht. Gibt es eine Tastenkombination, mit der Sie die CMD-Konsole an der Stelle anhalten können, an der sie gerade angehalten und die Ausgabe gelesen werden soll, und die Ausgabe dann an derselben Stelle erneut starten können?

Bildbeschreibung hier eingeben


4
Es gibt immer STRG-S. Dann STRG-Q, um neu zu starten.
BillP3rd

Sie können das Bildlauffeld greifen und es nach oben verschieben. Dadurch wird der Bildlauf effektiv angehalten. Sie können dann die Abwärtspfeiltaste drücken, um zum unteren Rand des Puffers zu gelangen.
Burhan Khalid

Ist dies nicht der beabsichtigte Zweck der "Scroll Lock" -Taste?
TOOGAM

Antworten:


5

Das habe ich in den anderen Antworten nicht gesehen.

Ich glaube, dass die seriellen Steuersequenzen von 'Strg-S' XOFF und 'Strg-Q' XON die Schlüsselsequenzen sind, die das Problem lösen sollen.

Bitte sehen Sie;

XON / XOFF


1
Ich habe dies aus einigen Gründen geändert, um die beste Antwort zu finden. Laut Recherche hält die Pause / Pause-Taste die Ausgabe an, aber nicht die Ausführung, die in der anderen Antwort nicht erwähnt wird. Strg + Pause / Pause muss verwendet werden, um die Ausführung anzuhalten. Dies ist auf den meisten Tastaturen etwas umständlicher als Strg + S und Strg + Q (kann nur mit der linken Hand ausgeführt werden). Das heißt, Strg + Pause / Pause hat den Vorteil, dass Sie sich nicht zwei zusätzliche Tastenkombinationen merken müssen. Beide Antworten sind also gut. Ich möchte nur sehen, dass diese die Upvotes bekommt, die sie verdient.
Hashim

Beachten Sie, dass, obwohl diese Antwort eine Unix / Linux-Frage enthält, die Tastenkombinationen auf CMD.exe einwandfrei funktionieren, zumindest auf meinem Windows 7-Betriebssystem.
Hashim

1
@Hashim, vielen Dank für Ihre Recherche. Da Sie speziell gefragt haben, wie die Ausgabe angehalten werden soll , habe ich diese Möglichkeit nicht in Betracht gezogen (noch getestet), aber es ist schön, davon zu lernen. (Upvoted)
Marc.2377

16

Enthält Ihre Tastatur die Pause/BreakTaste? Es würde gut dafür dienen. So sieht es aus oder war es zumindest gewohnt:

Pause Break Key von Wikipedia

Als interessanter Bonus kann dieser Schlüssel auch während des POST (Power On Self Test, der ausgeführt wird, wenn der Computer eingeschaltet ist) zum Lesen der Ausgabe aus dem BIOS verwendet werden.

Wenn Sie diesen Schlüssel nicht haben, sollte die Kombination Control+ NumLockgenauso funktionieren, und laut Wikipedia gibt es je nach Hersteller andere Optionen .

Um die Ausführung fortzusetzen, drücken Sie Enter.


Hinweis: Bei einigen Tastaturen ist möglicherweise eine bestimmte Bildlaufsperre (normalerweise markiert ScrLk) vorhanden, die einen ähnlichen Zweck erfüllen kann.
Burhan Khalid

@BurhanKhalid Nun, ich habe über diesen Link gelesen, dass er die Ausgabe anhält , aber nicht die Ausführung , und dieser Effekt scheint nicht für die MS Windows-Konsole zu gelten ... aber cool zu wissen
Marc.2377

1
Mit ping scheint die Ausführung zu stoppen. Das ist sehr seltsam, da Ping eine diskrete ausführbare Datei ist. Zusätzlich bleibt der Prozess ping.exe im Prozess-Explorer, bis er abgeschlossen werden kann. Während der Pause gehen alle Threads ineinander über Wait:Executiveund scheinen nicht regelmäßig zu pulsieren. Faszinierend.
Frank Thomas

2
Ein weiterer Trick, den ich gerne benutze, ist das Markieren von Text mit der Maus (ich habe immer den Schnellbearbeitungsmodus aktiviert). Das stoppt auch die Ausgabe (und damit die Ausführung, da ein Programm, das auf stdout schreibt, wartet, bis der Stream geschrieben ist).
14.

1

Sie können den Befehl "more" verwenden. Obwohl es nicht genau das ist, wonach Sie suchen, wird die Bildschirmausgabe durch eine Seite begrenzt.


1
Dies ist die beste Lösung, da das Anhalten der Ausgabe zum richtigen Zeitpunkt angesichts der Geschwindigkeit, mit der die Ausgabe im Allgemeinen erstellt wird, so gut wie unmöglich ist. Zur Verdeutlichung müssen Sie nach Ihrem Befehl eine Pipe gefolgt von MORE verwenden. Zum Beispiel NETSH HTTP SHOW SSLCERT | MEHR
Vincent

Windows hat nicht "mehr" native
KumarAnkit

1

Hinzufügen eines weiteren nützlichen Weges für Linux-Shells . (Aber vielleicht auch in Windows ok, probiere es aus!)

Durch Drücken von ctrl+z wird das Programm beendet. (Nachricht: gestoppt)

Um es in seinem vorherigen Zustand erneut auszuführen, als wäre es angehalten:

Art fg

Oder für die mehrfache Verwendung: program_name_previously_ctrl + z_stopped `fg


0

Es gibt noch ein paar andere Methoden, die wir hinzufügen können, wenn wir gründlich sind:

1) Zusätzlich zu der Schaltfläche Pause / Pause können Sie die Funktionalität mit "STRG + C" duplizieren.

Dadurch wird das Cmd-Skript angehalten und Sie gefragt, ob Sie es beenden möchten. Sobald Sie fertig sind, können Sie "NEIN" auswählen (oder vielleicht ja, wenn es Ihnen passt) und es wird fortgesetzt (oder beenden, wenn Sie ja gewählt haben).

2) Sie können AUCH mit der Maus pausieren, indem Sie mit dem Mauszeiger in das Fenster klicken, um Text aus dem CMD-Terminal auszuwählen.

Möglicherweise haben Sie das Anhalten der Ausgabe in der Vergangenheit bemerkt und gedacht, dass nur die Ausgabe verzögert wird. Wenn jedoch Skripts in interaktiven cmd-Instanzen ausgeführt werden, unterbrechen Sie tatsächlich die Ausführung des Codes (wie bei "Pause / Break" und "CTRL") + C "Methoden).

Sobald das Fenster jedoch den Fokus verliert oder Sie darauf klicken, um die Unterbrechung aufzuheben, wird die Codeausführung fortgesetzt, und Sie haben keine Möglichkeit, den Code auf diese Weise zu beenden.


Wow, ihr seid jung. Nie verwendete serielle Terminals? Probieren Sie Strg-s / Strg-Q
NetScr1be

Terminal-Emulator-Software implementiert im Allgemeinen die XOFF / XON-Unterstützung als Grundfunktion. Dies umfasst im Allgemeinen die Systemkonsole auf modernen Unix- und Linux-Computern sowie GUI-Emulatoren wie xterm und die Win32-Konsole.
NetScr1be
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.