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 命令提示字元中執行,觀察其外觀與行為。