HOWTO · Batch

バッチスクリプトの色

このチュートリアルでは、バッチスクリプトの色について説明します。

このページの内容

Windows Command Prompt の COLOR コマンドは、コンソールの背景色と文字色を変更します。Batch スクリプトでは、プロンプトや状態メッセージを見分けやすくするために使えます。16進数の1桁目が背景色、2桁目が前景色(文字色)を指定します。たとえば、COLOR 0A は黒い背景に明るい緑色の文字を指定します。

COLOR コマンドの仕組み

構文は COLOR attr です。attr は 0 から F までの16進数2桁を、間に空白を入れずに続けて指定します。1桁目が背景色、2桁目が前景色です。したがって、COLOR 1E は青い背景に明るい黄色の文字を指定します。色名はコンソールのパレット上の色を表しますが、実際の見え方はユーザー側のコンソールの色設定によって異なる場合があります。

Batch ファイルに記述するコマンドを表示するには、次の Python の例を実行します。

このセクションのコードと表示されるラベルや出力は英語のままです。

print("COLOR 0A")
COLOR 0A

Python の行は Batch コマンドを表示するだけで、ターミナルの色を変更するものではありません。Windows Command Prompt で COLOR 0A を実行すると、黒い背景に明るい緑色の文字になります。続けて COLOR 0F を実行すると、黒い背景に明るい白色の文字に切り替わります。メッセージは通常どおり選択できるコンソールテキストで、色が変わるのは見た目だけです。

Batch のカラーコード

各桁は、コンソールで使える16色のいずれかを表します。これらの値は COLOR の引数のどちらの桁にも使用できます。

コード 色
0 黒
1 青
2 緑
3 水色
4 赤
5 紫
6 黄
7 白
8 灰色
9 明るい青
A 明るい緑
B 明るい水色
C 明るい赤
D 明るい紫
E 明るい黄色
F 明るい白

たとえば、COLOR 0C は黒い背景に明るい赤色の文字を指定します。このコマンドは16進数を受け付けるため、A から F までの英字は大文字でも小文字でも使えます。

Batch スクリプトで色を設定する

見た目を変えたいメッセージの前に COLOR を記述します。この設定は現在の Command Prompt セッションに適用されるため、後から COLOR コマンドを実行して別の色の組み合わせに切り替えられます。スクリプトで @echo off、color 0A、set /p "name=Enter your name: "、echo Hello, %name%! の順に実行すると、黒い背景に明るい緑色の文字を設定し、名前を入力するよう促してから応答を表示します。

SET /P はプロンプトを表示し、入力を待ちます。このスクリプトでは、入力プロンプトとあいさつの両方に黒地の明るい緑色が使われます。コンソールのパレットをカスタマイズすると色名から想定される見た目が変わることがあるため、表示する環境で十分なコントラストが得られる組み合わせを選んでください。インラインコード内のプロンプトと応答は、例の一部として英語のままです。

メッセージやエラーに色を使う

スクリプトでは、メッセージの種類に応じて色の組み合わせを切り替えると、状態やエラーを見つけやすくできます。たとえば、color 0F の後に echo Starting the task. を実行すると、一般的なメッセージが明るい白色の文字で表示されます。color 0C の後に echo Error: the task could not continue. を実行すると、エラーが明るい赤色で表示されます。これらのコマンドとメッセージは、Batch ファイル内で選択できるテキストのままです。

0F は黒い背景に明るい白色の文字、0C は黒い背景に明るい赤色の文字を意味します。色だけを状態の伝達手段にせず、メッセージに Error のような意味のある語を含めてください。色が見分けにくい場合や利用できない場合でも、内容が伝わります。インラインコード内のメッセージ例は英語のままです。

無効な色の組み合わせに対処する

前景色と背景色には異なる値を指定する必要があります。COLOR 44 のように同じ桁を並べた組み合わせは無効で、「既定値に戻す」という意味ではありません。前景色と背景色に同じ値を指定すると、COLOR コマンドは Batch の ERRORLEVEL を 1 に設定します。色を選ぶ際は、同じ桁の組み合わせを避けてください。

色を変更した直後にコマンドの状態を確認するには、状態を上書きする可能性のある別のコマンドを実行する前に ERRORLEVEL を調べます。たとえば、color 44 の直後に if errorlevel 1 echo COLOR did not accept the requested pair. を実行すると、コマンドが失敗したかどうかを確認できます。

この確認方法は、コンソールが特定の既定色に自動で切り替わったとは決めつけずに、失敗を知らせます。確実な色にしたい場合は、COLOR 07 のような有効な組み合わせを指定してください。これは黒い背景に白い文字です。インラインコード内のエラーメッセージは英語のままです。

Windows Command Promptでの制限

ここで示す Batch コマンド列は Windows Command Prompt の COLOR コマンドを使うもので、色を変更する動作はその環境に固有です。PowerShell には、コンソールの色を扱う独自のコマンドと規則があります。ここで使える色は表に示した16色で、実際に見える色合いは Command Prompt のカラーパレットによって異なる場合があります。Batch のコマンド列は説明用で、この環境では実行されていません。表示や動作を確かめるには、Windows Command Prompt で実行してください。