檔案格式
批次檔必須使用 CR+LF 換行,否則無法順利執行多行指令。
Windows 作業系統預設使用在地字元編碼的關係,批次檔建議使用 Big5 或 ANSI 字元編碼,比較不會遭遇問題。若要使用 UTF-8 編碼,必須在開頭執行 CHCP 65001
指令。
輸出訊息
ECHO 訊息
用來輸出自己想要顯示出來的訊息。
隱藏指令執行時輸出的訊息
@
DOS 命令在執行時,會顯示過程中產生的訊息。如果不想看到這樣的訊息,可用 @ 表示這行程式不顯示過程訊息。
關閉指令執行時輸出的訊息
ECHO OFF
所有程式都不顯示過程訊息。
通常連 ECHO OFF 這行程式也不希望顯示過程訊息,因此會在前面加上 @,變成 @ECHO OFF。
暫停
PAUSE
程式停止執行,等待使用者按任意鍵再繼續。
尋訪
FOR %%變數 IN (篩選) DO 指令 [參數]
FOR 指令與其說是迴圈,不如說是用來尋訪檔案。變數保存的是尋訪的檔案名稱。
篩選的寫法像是 (*.mp4 *.mkv),沒有篩選條件的話用萬用字元 (*)。
底下範例會開啟批次檔所在資料夾下所有 *.txt 檔案:
跳躍
跳到特定位置,執行其後的程式。
最常見的用法是設定 :end 做為批次檔的結尾,然後在批次檔已經完成任務時,就可以跳過接下來的程式,直接結束工作。
條件
檢查資料夾或檔案是否存在
IF EXIST 資料夾或檔案
檢查批次檔接受到的數值資料
IF ERRORLEVEL 數值
反向條件
IF 後面可用 NOT
作相反條件的判斷。
分歧條件
IF 判斷式 (執行功能) ELSE (執行功能)
注意!ELSE 與前面的 ) 符號不能斷行!
也因此,為了讓批次檔的分歧條件式,能夠更像結構化程式語言的 if else,可以採用如下的編寫風格:
IF 判斷式 (
執行功能
) ELSE (
執行功能
)
甚至多數人覺得,在批次檔使用 GOTO,反而比 IF ELSE 容易閱讀。(不過 GOTO 比較不好寫,因為用「下一行」取代 ELSE 的情況下,要更花費心力,才能安排好執行流程。)
詢問
CHOICE
會詢問 Y/N。
其後應搭配 IF %ERRORLEVEL%==1
判斷使用者選的是 Y,或者 IF %ERRORLEVEL%==2
選的是 N。
CHOICE 還允許自定更多選項,例如:
參數
接在批次檔後面的參數,可用 %1
到 %9
來取得。
%1 是帶入的檔案的話:
%~D1 | 磁碟機代號 |
%~P1 | 路徑 |
%~N1 | 檔名 |
%~X1 | 副檔名 |
%~NX1 | 檔名與副檔名 |
變數
取一個識別名稱,保存程式中所要用到的資料,以便讀取。
讀取變數
%變數名稱%
%變數名稱:~開始位置,擷取字數%
系統環境變數
Windows 作業系統已經內定許多環境變數,可以方便我們設計批次檔時,更簡單、明確進行想要的操作目標:
%APPDATA% | 使用者家目錄的 AppData 的 Roaming 資料夾。 |
%CD% | 當前路徑。 |
%DATE% | 日期。 |
%HOMEDRIVE% | 使用者家目錄所在磁碟機的代號。 |
%HOMEPATH% | 使用者家目錄的資料夾路徑,不含磁碟機代號。 |
%PROGRAMFILES% | 系統 Program Files 資料夾的路徑。 |
%PROGRAMFILES(X86)% | 系統 Program Files (x86) 資料夾的路徑。 |
%RANDOM% | 隨機取得 0 到 32767 之間的整數。 |
%SYSTEMDRIVE% | 安裝作業系統的磁碟機代號。 |
%SYSTEMROOT% | 安裝作業系統的資料夾。 |
%TEMP% | 暫存檔 temp 資料夾的路徑。 |
%TIME% | 時間。 |
%USERNAME% | 使用者帳號名稱。 |
%USERPROFILE% | 使用者家目錄完整路徑。 |
綜合範例
呼叫外部批次檔
CALL 批次檔
執行另一個批次檔,然後繼續往下一個流程執行。
結束正在執行的程式
TASKKILL /IM 程序名稱
TASKKILL /PID 處理程序識別碼
註解
REM 註解文字
不會被批次檔執行,適合用來說明程式意圖,方便往後閱讀程式碼。
配色
COLOR 背景顏色和前景顏色
0 黑色
1 藍色
2 綠色
3 藍綠色
4 紅色
5 紫色
6 黃色
7 淺灰色
8 深灰色
9 淡藍色
A 淡綠色
B 淡藍綠色
C 淡紅色
D 淡紫色
E 淡黃色
F 白色
兩個顏色要連在一起,例如:
視窗大小
MODE CON COLS=寬度 LINES=高度
單位分別是字元數和行數,不是像素。
免命令提示字元視窗執行應用程式
START "" 程式
START /D 路徑 程式
說明
各指令的更完整功能,請用 HELP 指令
查閱。
釘選到工作列或開始畫面
為批次檔建立捷徑,然後在圖示按「滑鼠右鍵」→「內容」,修改「目標」,在前面加上 CMD /C
即可。