![Können wir im Batch-Skript mehr Farben verwenden?](https://rvso.com/image/1585769/K%C3%B6nnen%20wir%20im%20Batch-Skript%20mehr%20Farben%20verwenden%3F.png)
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:
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 VirtualTerminalLevel
inHKEY_CURRENT_USER\Console
und 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 ESC
auf das echte Escape-Zeichen umstellen (ASCII 27/0x1B) lokal. Hier ist die Beispielausgabe:
[char]0x1B
In PowerShell ist es einfacher, das Escape-Zeichen als , oder einzubetten, [char]27
ohne 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"
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?