Können wir im Batch-Skript mehr Farben verwenden?

Können wir im Batch-Skript mehr Farben verwenden?

16 Farben haben wir bereits drin:

0 = Black       8 = Gray
1 = Blue        9 = Light Blue
2 = Green       A = Light Green
3 = Aqua        B = Light Aqua
4 = Red         C = Light Red
5 = Purple      D = Light Purple
6 = Yellow      E = Light Yellow
7 = White       F = Bright White

aber ich möchte mehr Farben in einer Batchdatei verwenden

Irgendeine Hilfe?

Antwort1

Kann ich in einer Windows-Batchdatei mehr als 16 Farben verwenden?

Nein, da die meisten Windows-Apps nur 16 Farben unterstützen.

Allerdings wurde im Windows 10 Insiders Build Nr. 14931 die Windows-Konsole aktualisiert, um 24-Bit-RGB-True-Color zu unterstützen.

Wie oben erwähnt, können die meisten Windows-Apps diese Erweiterung leider (noch) nicht nutzen.

Mithilfe des Windows-Subsystems für Linux (WSL) können Linux-Skripte und -Tools jedoch die neue 24-Bit-Farbunterstützung der Konsole nutzen:

Eine der am häufigsten gestellten Anfragen betrifft die Erhöhung der Anzahl der Farben, die die Windows-Konsole unterstützen kann. Wir lieben es, Ihnen die gewünschten Funktionen zu bieten!

Aber anstatt nur ein paar weitere Farben hinzuzufügen oder unsere Konsole auf lediglich 256 Farben zu beschränken, in Windows 10 Insiders Build #14931,

Wir haben die Windows-Konsole aktualisiert, um volle, prächtige 24-Bit-RGB-Echtfarben zu unterstützen!

Dies lässt sich tatsächlich etwas schwierig vorführen, da die meisten Windows-Anwendungen höchstens 16 Farben unterstützen, während in der Linux-Welt Terminals mit 256 Farben schon seit einiger Zeit allgemein unterstützt werden und sich 24-Bit-Farben immer mehr etablieren.

Dank unserer Fähigkeit, Linux-Apps und -Skripte mit unserer neuen Bash-Umgebung unter Ubuntu unter Windows auf dem Windows-Subsystem für Linux (WSL) auszuführen, können wir einige Linux-Skripte und -Tools verwenden, um die neue 24-Bit-Farbunterstützung der Konsole zu demonstrieren:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Wir haben noch nicht mit der Arbeit an der Verbesserung der Konsoleneigenschaftenseite begonnen, um die neuen Farbwiedergabefunktionen der Konsole zu unterstützen, und wir haben die standardmäßigen Windows-Farbzuordnungen nicht geändert. Wir werden hier und an den vielen, VIELEN anderen Funktionen, die in unserer Warteschlange für zukünftige Builds stehen, Verbesserungen vornehmen.

Quelle24-Bit-Farbe in der Windows-Konsole! | Windows-Befehlszeilentools für Entwickler

Antwort2

Windows 10 conhost.exeunterstütztANSI-Escape-Codeseinschließlich 24-Bit-Farbe. Siehe

Derzeit müssen Sie jedochANSI-Sequenzunterstützung aktivierenin durch die Erstellung eines DWORD mit dem Namen VirtualTerminalLevelinHKEY_CURRENT_USER\Consoleund setzen Sie den Wert auf 1. Wenn danach 24-Bit-Farbe in Bash unterstützt wird, können Sie auch 24-Bit-ANSI-Farbe in allen cmd- oder PowerShell-Sitzungen verwenden. Unten sehen Sie ein cmd-Beispiel

echo ESC[38;2;40;177;249m color: 40;177;249 ESC[0m
echo ESC[38;2;255;255;100m color: 255;255;100
echo ESC[48;2;200;0;200m color: 200;0;200 ESC[0m

Leider kann ich das reine Escape-Zeichen hier nicht einfügen, daher müssen Sie es ESCauf das echte Escape-Zeichen umstellen (ASCII 27/0x1B) lokal. Hier ist die Beispielausgabe:

cmd 24-Bit-Farbe

[char]0x1BIn PowerShell ist es einfacher, das Escape-Zeichen als , oder einzubetten, [char]27ohne auf Methoden zum Einfügen des Roh-Escape-Zeichens zurückzugreifen.`u{001B}`e

echo "$([char]0x1B)[38;2;40;177;249m color: 40;177;249 $([char]0x1B)[0m"
echo "$([char]0x1B)[38;2;255;255;100m color: 255;255;100"
echo "$([char]0x1B)[48;2;200;0;200m color: 200;0;200 $([char]0x1B)[0m"

Powershell 24-Bit-Farbe

Sie können auch überprüfenErkennen einer ANSI-kompatiblen Konsole aus einer Windows-Batchdateiund druckt 4-Bit- oder 24-Bit-Farben, abhängig von der aktuellen Konsole. In PowerShell ist es viel einfacher, verwenden Sie einfach$Host.UI.SupportsVirtualTerminal

SehenWie kann man die Win32-Konsole dazu bringen, ANSI/VT100-Escapesequenzen zu erkennen?

verwandte Informationen