⚡ 站長快讀:核心重點
- 文章屬性:教學實戰(Windows 自動化腳本)
- 適用系統:Windows 10 / Windows 11(本文指令皆為系統內建)
- 難易度 / 耗時:⭐ / 約 15 分鐘
- 核心結論:把平常一條一條敲的命令列指令寫進純文字檔、存成
.bat,雙擊就能一次跑完,不必安裝任何軟體。 - 適用對象:每天重複做同樣幾件事(備份、整理下載資料夾、開一整組工作程式)的 Windows 使用者
📌 快速答案
一句話答案:Windows 批次檔就是副檔名為
.bat的純文字檔,把命令提示字元的指令一行一行寫進去,存檔後雙擊或交給工作排程器呼叫,系統內建的 cmd.exe 就會由上往下逐行執行。
🧰 開始前的準備
- 系統需求:Windows 10 / 11,本文用到的指令全部內建,不需安裝任何軟體
- 權限需求:一般使用者即可;只有寫入 C 槽根目錄、Program Files 等受保護位置時,才需要在檔案上按右鍵選「以系統管理員身分執行」
- 需要工具:記事本(或任何純文字編輯器)、檔案總管
- 預計耗時:約 15 分鐘
- 難度門檻:會用記事本存檔就能做。動手前先把副檔名顯示打開(做法見〈Win10/Win11 如何顯示檔案副檔名〉),否則你很可能存出一個
backup.bat.txt,雙擊只會跳出記事本
🔍 為什麼你需要這個?
你有沒有這種固定動作:每天下班前把專案資料夾複製到外接硬碟、每週把下載資料夾裡幾百個檔案手動拖進不同分類、每次開工要先點開瀏覽器、Excel 和某個資料夾?這些事不難,只是煩,而且每做一次就有一次漏掉的機會。Windows 批次檔正是為這種情境而生:它不是程式語言,而是一張「指令待辦清單」——你把原本要在命令提示字元敲的指令依序寫下來,存成 .bat,以後雙擊一次就全部照做,順序一模一樣、不會漏掉。它完全內建、不需要學語法框架,是自動化門檻最低的一步。真的遇到需要判斷、迴圈與錯誤處理的複雜任務,再往 PowerShell 進階也不遲(可先看〈PowerShell 入門教學:非工程師也能用的 10 個實用指令〉)。
🛠️ 實戰步驟
⚠️ 動手前兩個提醒:①第一次跑任何會複製或移動檔案的批次檔,請先建一個測試資料夾試,確認結果正確再套到真實資料;②重要資料先備份,並確認腳本裡的路徑沒打錯——批次檔不會問你「確定嗎?」,它只會照做。
步驟一:寫出你的第一個 .bat
打開記事本,貼上這四行:
@echo off
chcp 65001 >nul
echo 哈囉,這是我的第一個批次檔
pause
存檔時選「另存新檔」→ 存檔類型改成「所有檔案」→ 檔名打 hello.bat → 編碼選「UTF-8」。回到檔案總管雙擊它,就會跳出黑底視窗顯示那句話。
三行各自的用途:@echo off 讓視窗不要把指令本身也印出來,畫面才乾淨;chcp 是切換主控台代碼頁的內建指令,65001 是 UTF-8 的代碼頁編號,加了它中文才不會變成亂碼(>nul 是把它自己的回報訊息吞掉);pause 會停在「請按任意鍵繼續」,讓你看得到結果。
💡 為什麼要這樣做? 批次檔跑完會立刻關閉視窗,這就是很多人抱怨「雙擊之後一閃而過、什麼都沒發生」的原因——它其實跑完了,只是你沒看到。養成結尾放
pause的習慣,除錯會輕鬆很多。
步驟二:5 個可以直接抄的實用範例
範例 1|一鍵備份重要資料夾
@echo off
robocopy "%USERPROFILE%\Documents" "D:\Backup\Documents" /E /XO /R:1 /W:5 /LOG+:"D:\Backup\backup.log"
echo 這次的結束碼是 %ERRORLEVEL%
pause
Robocopy 是 Windows 內建的檔案複製工具,適合拿來做「只補差異」的備份。上面幾個參數依 Microsoft 官方文件的定義如下:
| 參數 | 作用 |
|---|---|
/E | 複製子目錄,含空目錄 |
/XO | 排除比目的地舊的來源檔案(等於只更新較新的) |
/R:1 | 複製失敗時重試 1 次(不指定的話預設是 100 萬次) |
/W:5 | 每次重試間隔 5 秒(預設 30 秒) |
/LOG+: | 把結果附加寫進記錄檔 |
/R 與 /W 這兩個看似瑣碎的參數其實最該寫:官方文件載明 /R 預設值是 1,000,000 次、/W 預設 30 秒,萬一有檔案被鎖住,不指定它們的話你的備份等於卡在那裡重試到天荒地老。另外 Robocopy 結束後會回傳結束碼,0 到 7 屬於正常結果,8 以上代表至少發生一次失敗,寫進記錄檔就能事後對帳。
⚠️ 一個常見地雷:網路上很多範例直接叫你加
/MIR。官方定義/MIR等同於/E加/PURGE,而/PURGE會刪除目的地裡來源已經不存在的檔案和目錄——來源不小心少了什麼,備份端連同整個資料夾都會跟著被清掉。不確定的話,先加/L只列出不實際複製,看清楚它打算做什麼再拿掉。
範例 2|把下載資料夾依類型分類
@echo off
cd /d "%USERPROFILE%\Downloads"
if not exist "圖片" md "圖片"
if not exist "文件" md "文件"
move /y *.jpg "圖片" >nul 2>&1
move /y *.png "圖片" >nul 2>&1
move /y *.pdf "文件" >nul 2>&1
echo 整理完成
pause
cd /d 切換到目標資料夾(加 /d 才能連磁碟機一起換),if not exist ... md 是「沒有就建資料夾」,>nul 2>&1 則是把「找不到符合檔案」這類雜訊訊息吞掉。要加類型就照著多寫一行。
範例 3|網路怪怪的時候一鍵蒐證
@echo off
set LOG=%USERPROFILE%\Desktop\net-check.txt
ipconfig /all > "%LOG%"
ipconfig /flushdns >> "%LOG%"
ping -n 4 8.8.8.8 >> "%LOG%"
start notepad "%LOG%"
set 用來建立變數,之後用 %LOG% 就能代入它的值;> 是把輸出寫進檔案(覆蓋),>> 是附加。這支腳本的價值在於:要請人幫你看網路問題時,你可以直接把這份純文字檔傳過去,而不是傳一張看不清楚的截圖。
範例 4|批次幫檔案加上日期前綴
@echo off
cd /d "D:\掃描檔"
for %%f in (*.pdf) do ren "%%f" "20260731_%%f"
pause
for 會把符合條件的檔案一個一個丟給 do 後面的指令執行。這裡有個新手一定會踩的坑:在批次檔裡變數要寫兩個百分比 %%f,直接在命令提示字元手打時卻只寫一個 %f——這是 Microsoft 官方文件明載的差異,寫錯不會有貼心提示,只會直接報語法錯誤。想做更精細的規則比對(例如只挑檔名符合某種樣式的),可以接著看〈正規表示式 regex 入門〉。
範例 5|一鍵開好整組工作環境
@echo off
start "" "%USERPROFILE%\Documents\專案"
start "" excel
start "" https://adersaytech.com
start 可以開資料夾、程式或網址。注意每個 start 後面那組空的雙引號 "":那是「視窗標題」參數,漏掉的話,你路徑上的雙引號會被當成標題,程式就開不起來——這是 start 最常見的翻車點。
步驟三:驗證結果與三個最常見的坑
寫完先驗證再交給排程:在資料夾網址列打 cmd 按 Enter,於該視窗輸入批次檔名執行。這樣做的好處是錯誤訊息會留在畫面上,不會隨著視窗關閉一起消失。三個最常見的問題:
- 雙擊一閃而過:多半是跑完了,只是沒有
pause;若真有錯誤,用上面的方式在 cmd 視窗裡跑就看得到原因。 - 中文變亂碼:檔案存成 UTF-8 卻沒加
chcp 65001,或反過來存成 ANSI 卻加了。兩者擇一對齊即可。 - 路徑有空白:
C:\Program Files\...這種路徑一定要用雙引號包起來,否則會被拆成兩個參數。
確認沒問題後,再用工作排程器讓它定時自動跑,做法見〈Windows 工作排程器教學:讓電腦定時自動幫你跑程式、備份、腳本〉。
💡 總結:批次檔的天花板在哪裡
站長我的看法是:批次檔的價值不在強大,而在門檻低到你今天就會開始用。它天生適合「固定順序、不需要判斷」的重複工作——備份、搬檔案、開一組程式,寫五行就能天天替你省時間。但它的天花板也很明顯:語法古老、字串處理笨拙、錯誤處理幾乎等於沒有,一旦你的需求出現「依條件分流」「解析檔案內容」「失敗要重試並通知」,再硬撐下去只會愈寫愈難維護。那個時間點就是換 PowerShell 的訊號,兩者在同一台 Windows 上並存,不必二選一。實務上最順的組合是:單純動作用 .bat、複雜邏輯用 PowerShell、定時執行一律交給工作排程器。最後提醒一句——網路上抄來的批次檔請務必先用記事本打開看過內容再執行,.bat 是純文字,看得懂的就別怕,看不懂的就別跑。
❓ 常見問題
Q:.bat 跟 .cmd 有什麼不同?該用哪一個?
兩者都是交給 cmd.exe 執行的批次檔,.BAT 與 .CMD 也同列在 Windows 預設的可執行副檔名清單裡。就本文這類簡單腳本的情境來說,挑一個順手的用即可,兩種副檔名都能直接套用;真要細究內部行為差異,那是進階議題,日常自動化用不到。
Q:批次檔需要「以系統管理員身分執行」嗎?
看它動到什麼。備份自己的文件、整理下載資料夾都不用;要寫入 C 槽根目錄、Program Files 或變更系統設定時才需要,做法是在 .bat 上按右鍵選「以系統管理員身分執行」。
Q:別人傳來的 .bat 可以直接雙擊嗎?
不建議。批次檔是純文字,先用記事本打開看內容,看不懂就不要執行。若真的必須測試來路不明的檔案,建議在 Windows 沙箱這類拋棄式虛擬環境裡跑,不要直接在主力電腦上雙擊。
Q:批次檔可以自己定時執行嗎?
批次檔本身沒有排程功能,要交給 Windows 內建的工作排程器,設定觸發時間後由它呼叫你的 .bat。
🔗 延伸閱讀
- PowerShell 定時備份:用工作排程器打造全自動備份
- Python 自動化第一課:批次改檔名、自動整理資料夾一次學會
- AutoHotkey v2 入門教學:自訂快捷鍵+文字快速輸入一次上手
- Windows 沙箱教學 2026|三秒開拋棄式虛擬機測可疑檔案
- Win10/Win11 資料夾或檔案刪不掉怎麼辦?教你 6 種方式解決
📎 參考資料來源
📖 第一級|廠商官方:
- Microsoft Learn:cmd 命令參考(環境變數、重新導向與
&&運算子) — 2026-07-31 查證 - Microsoft Learn:robocopy 命令參考(參數、
/MIR定義與結束碼) — 2026-07-31 查證 - Microsoft Learn:chcp 命令參考(變更主控台代碼頁) — 2026-07-31 查證
- Microsoft Learn:for 命令參考(批次檔中須使用
%%變數) — 2026-07-31 查證 - Microsoft Learn:代碼頁識別碼(65001 = UTF-8) — 2026-07-31 查證
⚠️ 本文核心事實以第一級為準。
📅 本文查證戳記:2026-07-31 依據 Microsoft Learn 官方文件撰寫,指令適用 Windows 10 / Windows 11。若你在後續版本遇到步驟失效,歡迎在留言區回報,站長會更新文章。