HOWTO · Batch
在批處理指令碼中新增註釋
本教學提供在批次指令碼中新增註解的完整指南。了解可用的方法,包括 REM 命令和雙冒號,以及為什麼 GOTO(會重新導向執行)不是註解方法。探索撰寫有效註解的最佳做法,讓你的程式碼對自己和他人都更清晰。
本頁內容
在 Windows Batch(.bat 或 .cmd)檔案中新增註釋時,使用 REM 最清楚也最可靠。以 :: 開頭的行也常用作註釋,但 CMD 會將它解析為標籤,因此放置位置有所限制。這兩種形式都可用來說明程式意圖;它們不會改變指令碼原本要執行的工作。
選擇 Batch 註釋形式:REM 或 ::
REM 是用來標示註解的命令。它是標準選項;在括號括住的命令群組中加入註釋時,也更適合作為預設選擇。:: 則是類似標籤的慣用寫法:CMD 會將它視為標籤,而不是專門的註釋命令。單獨成行的說明使用這種寫法很簡潔,但標籤可能會影響區塊解析與控制流程。若要讓指令碼的行為更容易預測,周圍語法較複雜時請優先使用 REM。
這兩種形式都適用於 Windows CMD Batch,並不是 PowerShell、Bash 或其他殼層通用的註釋語法。盡可能將註釋獨立成行,並聚焦說明命令的用途或所依據的假設。
使用 REM 或 :: 新增單行註釋
以下 Windows CMD 範例展示了可儲存為 comments.bat 的簡單實用寫法。範例在命令前分別放置一行 REM 和一行 ::,方便你比較兩種形式在實際情境中的用法。此範例已成功執行,並印出下方顯示的兩行狀態訊息。程式碼與輸出區塊中可見的標籤文字維持英文。
@echo off
REM Describe the next action for the person maintaining this file.
echo Preparing the report
:: This label-like line is commonly used as a short note.
echo Report ready
Preparing the report
Report ready
CMD 執行到 REM 命令時,會忽略註釋文字,不把它當成指令。:: 行則會被視為標籤,但常用來達到相同的視覺效果。每則註釋後面的命令仍會執行。兩種註釋中的文字都不應暗示指令碼執行了實際上並未完成的工作。
在命令群組內及命令後妥善放置註釋
註釋可以放在命令之間。例如,REM 行可以放在 IF 行與其後的命令之間。在括號括住的群組中,請將 REM 放在獨立一行,並避免在註釋文字中使用可能影響 CMD 整體解析的字元,尤其是沒有配對的括號。CMD 解析括號括住的命令區塊時,可能會展開 %name%,即使它出現在 REM 行的文字中也一樣。註釋雖然會被捨棄而不顯示,但變數展開仍可能改變區塊的解析方式;請讓這類註釋保持簡單,並避免在其中使用百分比表示式。區塊內的註釋應簡短明確。
若要在命令後加上簡短註釋,請用 & 分隔,並使用 REM,例如 echo Preparing the report & REM this command prints the status。連接符號會在同一行開始另一個命令,但不代表每種註釋形式在所有情境下都安全。避免將 :: 附加在命令後,也不要在 IF 命令之後加入註釋,以免原本應與該命令配對的 ELSE 失去關聯。如果一行包含條件語法、命令分隔符或括號括住的群組,請將註釋移到獨立一行。這樣更容易看清命令結構,也能減少解析上的意外。
安全撰寫多行說明
Batch 沒有原生的區塊註釋分隔符。要跨多行撰寫說明,最直接的方式是在每一行前加上 REM(簡單且獨立成行的說明也可以使用 ::)。在命令群組附近重複使用 REM 較為合適,因為它是真正的命令,用途也很明確。
GOTO 會將執行流程導向某個標籤,因此會改變指令碼的控制流程,並不是註釋語法。不要用它來標記註釋區塊;多行說明請在每一行重複使用 REM。
一般情況請選用 REM;只有在周圍結構簡單時,才將 :: 用於獨立成行、類似標籤的說明。遇到條件命令或群組命令時,請將註釋另放一行。這些範例適用於 Windows CMD Batch 檔案,不應直接當作其他殼層的註釋語法使用。