HOWTO · Batch

批處理指令碼中的顏色

本教程將教授批處理指令碼中的顏色。

本頁內容

Windows 命令提示字元中的 COLOR 命令會變更主控台的背景色與文字色。在批次指令碼中,可以用它讓提示或狀態訊息更容易辨識。第一個十六進位數字指定背景色,第二個指定前景色(文字色)。例如,COLOR 0A 表示黑色背景與淺綠色文字。

COLOR 命令的運作方式

語法為 COLOR attr,其中 attr 是兩個連寫、不含空格的十六進位數字,範圍從 0 到 F。第一個數字代表背景色,第二個代表前景色。因此,COLOR 1E 會將背景設為藍色,文字設為淺黃色。顏色名稱描述的是主控台色盤;實際顯示效果可能依使用者的主控台色彩設定而異。

若要產生可放入批次檔的命令文字,可以執行以下 Python 範例:

本節中的程式碼以及顯示的標籤或輸出仍為英文。

print("COLOR 0A")
COLOR 0A

Python 這一行會輸出批次命令文字,不會變更終端機的顏色。在 Windows 命令提示字元中,COLOR 0A 會切換為黑底淺綠字;之後執行 COLOR 0F,則會切換為黑底亮白字。訊息仍是一般可選取的主控台文字,變更的只有文字外觀。

批次顏色代碼

每個數字都對應主控台的 16 種顏色之一。將這些值用在 COLOR 引數的任一位置:

代碼 顏色
0 黑色
1 藍色
2 綠色
3 青色
4 紅色
5 紫色
6 黃色
7 白色
8 灰色
9 淺藍色
A 淺綠色
B 淺青色
C 淺紅色
D 淺紫色
E 淺黃色
F 亮白色

例如,COLOR 0C 會使用黑色背景與淺紅色前景。這個命令接受十六進位數字,因此字母 A 到 F 可以使用大寫或小寫。

在批次指令碼中設定顏色

在你想變更外觀的訊息之前放入 COLOR。這項設定會套用於目前的命令提示字元工作階段,因此之後可以再執行 COLOR,選用另一組顏色。在指令碼中,依序使用 @echo off、color 0A、set /p "name=Enter your name: " 和 echo Hello, %name%!,就會設定為黑底淺綠字、提示使用者輸入姓名,再顯示回應。範例中的提示文字 Enter your name: 和問候文字 Hello 保留英文。

SET /P 會顯示提示並等待輸入。這段指令碼的提示與問候訊息都會使用黑底淺綠字。請選擇對預定顯示環境有足夠對比的顏色組合,因為自訂主控台色盤可能會改變各顏色名稱所呈現的外觀。

使用顏色區分訊息與錯誤

指令碼可以在不同類型的訊息之間切換顏色組合,讓狀態或錯誤更容易辨識。例如,先執行 color 0F 再執行 echo Starting the task.,一般訊息就會以亮白色文字顯示;先執行 color 0C 再執行 echo Error: the task could not continue.,錯誤訊息就會以淺紅色顯示。這些命令和訊息在批次檔中仍是可選取的文字。範例中的訊息內容保留英文。

此處的 0F 代表黑底亮白字,0C 代表黑底淺紅字。應將顏色視為視覺提示,而不是傳達狀態的唯一方式:請在訊息中保留 Error 這類有意義的文字,讓讀者在難以辨識顏色或無法顯示顏色時仍能理解訊息。

處理無效的顏色組合

前景色和背景色必須不同。兩個數字相同的組合,例如 COLOR 44,屬於無效組合,並不代表「還原預設值」。如果收到相同的前景與背景值,COLOR 命令會將批次 ERRORLEVEL 設為 1。選擇顏色組合時,請避免使用相同的數字。

若要檢查變更顏色命令的狀態,請在嘗試變更後立即測試 ERRORLEVEL,並在執行其他可能改寫其值的命令之前完成檢查。例如,先執行 color 44,緊接著執行 if errorlevel 1 echo COLOR did not accept the requested pair.,即可檢查命令是否失敗。範例中的錯誤訊息保留英文。

這項檢查會回報失敗,但不會假設主控台已悄悄切換到某個特定預設值。如果需要確定的顏色,請指定有效組合,例如 COLOR 07(黑色背景與白色文字)。

Windows 命令提示字元的限制

這些批次命令序列使用 Windows 命令提示字元的 COLOR 命令;變更顏色的行為僅適用於該環境。PowerShell 有自己的主控台顏色命令與規則。此處可用的選項是表格中的 16 種顏色,其實際色調可能因命令提示字元的色盤而異。這些批次命令序列僅供說明,未在此環境中執行;請在 Windows 命令提示字元中執行,觀察其外觀與行為。