Das rockt! Als Spieler liebe ich die Beben-Funktion. Die Konsole scheint jedoch oben auf dem Bildschirm gesperrt zu sein (auch wenn die Option oben gesperrt deaktiviert ist). Vielen Dank
Ced
Wie führt man cmd mit Tabulatoren aus?
Mikey
@Mikey Was? Lesen Sie zuerst die Antwort.
Maximus
34
Keine der Antworten auf dieser Seite erwähnt einen wichtigen Aspekt der neuen Unterstützung für ANSI Terminal Control, die dem Windows 10- Konsolenhost in Build 16257 (und höher) hinzugefügt wurde . Das heißt, es ist standardmäßig nicht aktiviert . Es sei denn , die spezifische Software verwenden Sie ermöglicht ANSI Verarbeitung durch den Aufruf SetConsoleMode API mit der ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)Flagge, werden Sie nicht Farben oder get ANSI für diese Anwendung der Verarbeitung sehen.
Beim Schreiben mit WriteFile oder WriteConsole werden Zeichen für VT100 und ähnliche Steuerzeichenfolgen analysiert, die die Cursorbewegung, den Farb- / Schriftmodus und andere Vorgänge steuern, die auch über die vorhandenen Konsolen-APIs ausgeführt werden können. Weitere Informationen finden Sie unter Sequenzen virtueller Konsolenterminals.
Ich vermute, der Grund, warum die auf dieser Seite gezeigten Beispiele funktionieren, ist, dass anscheinend der echoBefehl (oder möglicherweise der Stapelverarbeitungsteil von CMD.EXEoder conhost) die ANSI-Verarbeitung durch Aufrufen der gerade erwähnten API ermöglicht. Viele andere Tools oder ausführbare Dateien, in die geschrieben wird stdinoder die dies stdoutmöglicherweise nicht tun, sehen in diesem Fall keine Farben für diese Prozesse.
Glücklicherweise kann der globale Standard von Opt-In zu Opt-Out geändert werden . Der Registrierungsschlüssel unter HKEY_CURRENT_USER\Console\VirtualTerminalLevellegt das globale Standardverhalten für die Verarbeitung von ANSI-Escape-Sequenzen fest. Erstellen Sie einen DWORDSchlüssel (falls erforderlich) und legen Sie dessen Wert fest, 1um die 0ANSI-Verarbeitung standardmäßig global zu aktivieren (oder zu deaktivieren).
Beachten Sie, dass diese Registrierungseinstellung eine Standardeinstellung steuert. Dies bedeutet, dass nur Konsolenanwendungen betroffen sind, die den Konsolenmodus nicht explizit durch Aufrufen manipulieren SetConsoleMode(...). Daraus folgt, dass der Registrierungswert möglicherweise dazu beiträgt, ANSI für Anwendungen zu aktivieren, die den Konsolenmodus nicht kennen . Er hat jedoch keine Auswirkungen auf Anwendungen, die den Konsolenmodus kennen und aus irgendeinem Grund ANSI explizit deaktivieren .
Das Verhalten der folgenden Sequenzen basiert auf dem VT100 und den abgeleiteten Terminalemulator-Technologien, insbesondere dem xterm-Terminalemulator. Weitere Informationen zu Terminalsequenzen finden Sie unter http://vt100.net und http://invisible-island.net/xterm/ctlseqs/ctlseqs.html .
Sie können die Standardfarben auch mit Colortool ändern . Bei Neuinstallationen von Windows 10 werden leicht geänderte Farben angezeigt, die besser lesbar sind (insbesondere Blau auf Schwarz). Bei Aktualisierungen werden jedoch die alten, schwer lesbaren Farben beibehalten.
10
Gibt es einen Konsolenemulator für Windows, der ANSI-Farben interpretiert?
Windows vor 10 - Keine native Unterstützung für ANSI-Farben auf der Konsole
Bei Windows-Versionen unter 10 unterstützt die Windows-Befehlskonsole standardmäßig keine Ausgabefarben. Sie können entweder Cmder , ConEmu , ANSICON oder Mintty (standardmäßig in GitBash und Cygwin verwendet) installieren , um die Windows-Befehlskonsole farblich zu unterstützen.
Windows 10 - Befehlszeilenfarben
Ab Windows 10 unterstützt die Windows-Konsole standardmäßig ANSI-Escape-Sequenzen und einige Farben.
Ich bin nicht sicher, in welcher Win10-Version es sich genau handelt, aber es wird hier erwähnt: github.com/symfony/symfony/issues/19520 Auf meinem Firmen-Laptop - Ver 1511 (OS Build 10586.753) - habe ich es nicht benötigt. Auf meinem Heim-PC musste ich ansicon verwenden, da die Farben standardmäßig nicht aktiviert waren.
geff_chang
4
Sie haben gerade eine Flagge eingeführt, die die Farbausgabe steuert und standardmäßig falsch ist. Siehe wpdev.uservoice.com/forums/… ) --- Symfony verwendet PHP.exe unter Windows, bei dem die Markierung deaktiviert war. Daher mussten sie auf einen Patch warten, der hier landete: github.com/php/php- src / pull / 2103 . Situation gelöst. --- Für cmd.exe ist das Flag immer wahr. Aus diesem Grund unterstützt die Konsole Farben.
Jens A. Koch
1
Würden diese Codes auch in einem Shell-Skript unter Linux funktionieren? oder ist das anders gemacht?
Keine der Antworten auf dieser Seite erwähnt einen wichtigen Aspekt der neuen Unterstützung für ANSI Terminal Control, die dem Windows 10- Konsolenhost in Build 16257 (und höher) hinzugefügt wurde . Das heißt, es ist standardmäßig nicht aktiviert . Es sei denn , die spezifische Software verwenden Sie ermöglicht ANSI Verarbeitung durch den Aufruf SetConsoleMode API mit der
ENABLE_VIRTUAL_TERMINAL_PROCESSING (0x0400)
Flagge, werden Sie nicht Farben oder get ANSI für diese Anwendung der Verarbeitung sehen.Ich vermute, der Grund, warum die auf dieser Seite gezeigten Beispiele funktionieren, ist, dass anscheinend der
echo
Befehl (oder möglicherweise der Stapelverarbeitungsteil vonCMD.EXE
oderconhost
) die ANSI-Verarbeitung durch Aufrufen der gerade erwähnten API ermöglicht. Viele andere Tools oder ausführbare Dateien, in die geschrieben wirdstdin
oder die diesstdout
möglicherweise nicht tun, sehen in diesem Fall keine Farben für diese Prozesse.Glücklicherweise kann der globale Standard von Opt-In zu Opt-Out geändert werden . Der Registrierungsschlüssel unter
HKEY_CURRENT_USER\Console\VirtualTerminalLevel
legt das globale Standardverhalten für die Verarbeitung von ANSI-Escape-Sequenzen fest. Erstellen Sie einenDWORD
Schlüssel (falls erforderlich) und legen Sie dessen Wert fest,1
um die0
ANSI-Verarbeitung standardmäßig global zu aktivieren (oder zu deaktivieren).Beachten Sie, dass diese Registrierungseinstellung eine Standardeinstellung steuert. Dies bedeutet, dass nur Konsolenanwendungen betroffen sind, die den Konsolenmodus nicht explizit durch Aufrufen manipulieren
SetConsoleMode(...)
. Daraus folgt, dass der Registrierungswert möglicherweise dazu beiträgt, ANSI für Anwendungen zu aktivieren, die den Konsolenmodus nicht kennen . Er hat jedoch keine Auswirkungen auf Anwendungen, die den Konsolenmodus kennen und aus irgendeinem Grund ANSI explizit deaktivieren .quelle
Ab Windows 10 TH2 (v1511)
conhost.exe
(und damit verbundencmd.exe
) werden ANSI-Escape-Sequenzen unterstützt, insbesondere in folgenden Farben:Auf der MSDN-Seite zu Sequenzen für virtuelle Konsolenterminals wird erläutert, welche Sequenzen unterstützt werden und wie diese aktiviert werden:
quelle
Windows vor 10 - Keine native Unterstützung für ANSI-Farben auf der Konsole
Bei Windows-Versionen unter 10 unterstützt die Windows-Befehlskonsole standardmäßig keine Ausgabefarben. Sie können entweder Cmder , ConEmu , ANSICON oder Mintty (standardmäßig in GitBash und Cygwin verwendet) installieren , um die Windows-Befehlskonsole farblich zu unterstützen.
Windows 10 - Befehlszeilenfarben
Ab Windows 10 unterstützt die Windows-Konsole standardmäßig ANSI-Escape-Sequenzen und einige Farben.
MSDN-Dokumentation
Demo
Batch-Befehl
Das
win10colors.cmd
wurde durch schriftliche Michele Locati :quelle