バッチスクリプトでより多くの色を使用できますか?



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します。サンプル出力は次のとおりです。

cmd24ビットカラー

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 '

PowerShell24ビットカラー

また、WindowsバッチファイルからANSI互換コンソールを検出し、現在のコンソールに応じて4ビットまたは24ビットの色を印刷することもできます。 PowerShellでは、はるかに簡単です。使用するだけです。$ Host.UI.SupportsVirtualTerminal

win32コンソールにANSI / VT100エスケープシーケンスを認識させる方法を参照してください。