バッチスクリプトでより多くの色を使用できますか?
Can We Use More Colors Batch Script
解決:
Windowsバッチファイルで16色以上を使用できますか?
いいえ、ほとんどのWindowsアプリは16色しかサポートしていないためです。
ただし、Windows 10 Insiders Build#14931では、24ビットRGBトゥルーカラーをサポートするようにWindowsコンソールが更新されました。
残念ながら、前述のように、ほとんどのWindowsアプリはこの拡張機能を(まだ)利用できません。
ただし、Windows Subsystem for Linux(WSL)を使用すると、Linuxスクリプトとツールでコンソールの新しい24ビットカラーサポートを使用できます。
私たちが受け取る最も頻繁な要求の1つは、Windowsコンソールがサポートできる色の数を増やすことです。私たちはあなたが求める機能を提供することに他なりません!
ただし、Windows 10 Insiders Build#14931では、色をいくつか追加したり、コンソールを256色に制限したりするのではなく、
Windowsコンソールを更新して、完全で輝かしい24ビットRGBトゥルーカラーをサポートします。
ほとんどのWindowsアプリは最大で16色しかサポートしていないのに対し、Linuxの世界ではしばらくの間256色の端末が広くサポートされており、24ビットの色がより確立されているため、これは実際にはデモを行うのが少し難しいです。
Linux用Windowsサブシステム(WSL)上のWindows環境でUbuntu上の新しいBashを使用してLinuxアプリとスクリプトを実行できるおかげで、いくつかのLinuxスクリプトとツールを使用して、コンソールの新しい24ビットカラーサポートを示すことができます。
コンソールの新しい演色機能をサポートするためのコンソールプロパティページの改善作業はまだ開始されていません。また、デフォルトのWindowsカラーマッピングも変更されていません。ここで改善を行います。また、将来のビルドでは、他の多くの機能がバックログにキューイングされます。
Windowsコンソールでソース24ビットカラー! |開発者向けのWindowsコマンドラインツール
Windows 10 conhost.exe ANSIエスケープコードをサポートしていますか 24ビットカラーを含みます。見る
- Windowsコンソールの24ビットカラー!
- Windowsコンソールの色の更新
ただし、現在は次のことを行う必要があります ANSIシーケンスサポートを有効にする 名前の付いたDWORDを作成することによってのVirtualTerminalLevel
HKEY_CURRENT_USER Console
その後、その値を1に設定します。その後、bashで24ビットカラーがサポートされている場合は、任意のcmdまたはPowerShellセッションで24ビットANSIカラーを使用することもできます。以下はcmdの例です
エコーESC [38; 2; 40; 177; 249mカラー:40; 177; 249 ESC [0mエコーESC [38; 2; 255; 255; 100mカラー:255; 255; 100エコーESC [48; 2; 200; 0; 200mカラー:200; 0; 200 ESC [0m残念ながら、ここに生のエスケープ文字を貼り付けることはできないため、変更する必要がありますローカルで実際のエスケープ文字(ASCII 27 / 0x1B)にESCします。サンプル出力は次のとおりです。
PowerShellでは、エスケープ文字を次のように埋め込む方が簡単です。[char] 0x1B、[char] 27、`u {001B}または`e生のエスケープ文字を貼り付けるメソッドに解決せずに
echo '$([char] 0x1B)[38; 2; 40; 177; 249m色:40; 177; 249 $([char] 0x1B)[0m' echo '$([char] 0x1B)[38; 2; 255; 255; 100mカラー:255; 255; 100 'エコー' $([char] 0x1B)[48; 2; 200; 0; 200mカラー:200; 0; 200 $([char] 0x1B)[0m '
また、WindowsバッチファイルからANSI互換コンソールを検出し、現在のコンソールに応じて4ビットまたは24ビットの色を印刷することもできます。 PowerShellでは、はるかに簡単です。使用するだけです。$ Host.UI.SupportsVirtualTerminal
win32コンソールにANSI / VT100エスケープシーケンスを認識させる方法を参照してください。