如何在Windows下撰寫批次檔,簡化常態性工作? | iThome
文章推薦指數: 80 %
... 可以搭配Windows控制台的「排定的工作」設定排程,讓程式定時自動完成。
... 在DOS系統下,有執行檔(.exe和.com)及批次檔(.bat)等檔案類型, ...
移至主內容
文/李延華
|
2008-03-05發表
在DOS盛行,甚至到Windows95/98的年代,批次檔的應用仍相當普遍,舉例來說,那時的電腦幾乎都有一個Autoexec.bat檔,是在開機後、圖形使用者介面啟動前執行,用以呼叫或設定必要的系統程式或環境參數。
當Windows逐漸取代DOS系統,圖形化的物件點選設定逐漸取代文字介面,批次檔的應用也相對減少。
不過,這類的應用並沒有完全消失,事實上,如果你存在一些每日必須執行而且重複性高的工作,那麼善用批次檔,不但可以簡化工作流程,而且可以搭配Windows控制台的「排定的工作」設定排程,讓程式定時自動完成。
透過Windows控制台的「排定的工作」,將批次檔加入排程,即可讓批次工作依使用者的設定,在固定的時間與周期定時執行。
批次檔是純文字格式,副檔名為「.bat」在DOS系統下,有執行檔(.exe和.com)及批次檔(.bat)等檔案類型,可以使DOS執行某些工作。
例如command.com、edit.com、copy.exe或mem.exe。
這些執行檔是以編譯或組合語言寫成,一般使用者不會花時間學習編寫這類程式,但批次檔是一連串的DOS內部、外部指令或是執行程式的組合,因此只要懂得這些指令,再加上簡單的語法,就可以寫出批次檔。
批次檔必須是純文字檔,檔案要以「.bat」為副檔名,我們可以使用文書編輯軟體編寫內容,例如Windows內建的「記事本」或UltraEdit。
每一項指令要在一行中完成,不能分成兩行,而每行最多127個字。
檔名除了Autoexec.bat以外,批次檔的檔案名稱可由使用者自訂,但是最好避免與DOS指令同名,例如copy.bat、del.bat、dir.bat或exit.bat等。
此外,批次檔的內容是用DOS指令,加上特定語法寫成,指令包括DOS的內部及外部指令,例如call、choice、echo、for...in...do、goto、if、if(not)exit、pause、rem、shift等。
若是指令錯誤會有「Badcommandorfilename」的訊息回應,語法錯誤則會回應「Syntaxerror」。
執行批次檔,只需在命令提示列鍵入主檔名,例如Menu.bat或menu。
而在Windows環境下,只需滑鼠點兩下,即自動執行。
在批次檔執行過程中,使用者按[Ctrl]+[C]鍵或是[Ctrl]+[Break]鍵可隨時終止程序。
螢幕會顯示「Terminatebatchjob(y/n)?」,按[Y]鍵即終止批次檔,回到DOS的提示號;按[N]鍵取消;按[Ctrl]+[C]鍵,則會繼續執行。
搭配Windows排程,可定時自動執行如果批次檔的執行具定時及重複的特性,例如每日的備份作業,那麼搭配Windows控制台中的「排定的工作」,利用「排程工作精靈」,以一連串精靈化的步驟,預先設定批次檔、執行周期、時間和使用者的名稱及密碼,即可讓電腦自動化定時執行批次作業,避免人為遺忘或漏失的風險。
指次檔的語法很多,但多數人在長久操作Windows的使用環境下,早已不複記憶,這方面我們提供簡單的常用指令列表。
此外DOS指令可搭配的參數也很繁多,如果希望取得相關說明,可在命令提示列,於指令之後加上「/?」再執行,例如copy/?,系統即提供相關說明。
文⊙李延華常用的批次指令
指令
說明
範例
範例說明
echo
顯示此命令後的字元
echo結束
系統將顯示「結束」
call
呼叫另一個批次檔
calla.bat
系統執行a.bat的內容
pause
暫停批次處理的執行,待使用者按任意鍵後繼續。
Pause
螢幕顯示「Pressanykeytocontinue...」的提示,待使用者按任意鍵後繼續
rem
註解,不執行。
if[not]"參數"=="字串"
參數如果等於(not表示不等於)指定的字串,則執行命令,否則執行下一行指令。
if"%1"=="a"formata:
如果使用者輸入的第一個參數是”a”,就格式化a槽磁碟
if[not]exist[路徑\]檔案名待執行的命令
如果指定的檔案存在,則執行指定的指令
ifexistc:\a.battypec:\a.bat
如果c磁碟機存在a.bat檔,則顯示它的內容
iferrorlevel待執行的命令
許多DOS程式在執行結束後,會回傳一個數字,表示執行的結果或狀態,運用iferrorlevel可以判斷程式的回傳值,決定後續執行的指令
iferrorlevel0gotosuccess…(略):successecho成功
如果系統回傳值為0,則跳至success標籤,顯示「成功」
goto
批次檔執行到goto將跳到指定的標籤
gotoend …(略):end
echo結束
執行end標籤包含的指令,顯示「結束」
choice
讓用戶輸入一個字元,選擇後續執行的方向。
常搭配iferrorlevel使用
choice/c:yncYes,No,orContinue
螢幕將顯示:Yes,No,orContinue[Y,N,C]?
iThome整理,2008年2月
iThome歡迎讀者提問,請將你所遇到的各種企業IT疑難雜症,寄至iThome編輯部:[email protected]
熱門新聞
微軟成立新的Android部門,打算讓Windows與Android之間的流暢度比擬macOS與iOS
2022-04-04
程式語言Go以5招式防禦軟體供應鏈攻擊
2022-04-04
微軟公布Windows11與Windows365整合功能
2022-04-06
趨勢科技修補ApexCentral已遭攻擊的RCE漏洞
2022-04-04
美國CISA成立「ShieldsUp」網站列出可行的重點資安指引
2022-04-03
最新資料刪除軟體導致Viasat歐洲通訊衛星斷線
2022-04-04
GitLab修補允許駭客接管用戶帳號的重大漏洞
2022-04-04
俄烏戰爭造成俄羅斯IT人才大量出走
2022-04-04
Advertisement
專題報導
美國升起資安防護罩
儲存防寫應用重新崛起
烏克蘭戰爭的科技衝擊
跟Google學ML系統SRE
大型企業IT如何技術出海
更多專題報導
延伸文章資訊
- 1使用工作排程器執行批次檔 - 佛系筆記
啟動程式,可以直接輸入指令如圖shutdown ( 指shutdown.exe 程式),並輸入引數「/s /t 10」,表示要自動關機並停等10秒 ...
- 2如何在Windows下撰寫批次檔,簡化常態性工作? | iThome
... 可以搭配Windows控制台的「排定的工作」設定排程,讓程式定時自動完成。 ... 在DOS系統下,有執行檔(.exe和.com)及批次檔(.bat)等檔案類型, ...
- 3怎麼讓bat檔案自動執行 - 櫻桃知識
rem在這個後面寫你的命令,也可加上我剛剛寫的那些!! 這樣可以實現後臺執行了. 【方法2】. 用一個工具Quick Batch File Compiler. 再把程式碼寫進去之後,在 ...
- 4自動執行bat - 軟體兄弟
您可以參考一下這篇:如何設定工作排程執行.bat檔案. ,Windows 設定每日排程自動執行程式. (1) Windows Vista / 7 環境: ... 指定對應的bat 批次執行檔(C...
- 5[密技]可以開啟好多個程式的捷徑(bat) - 軟體邦
[密技]可以開啟好多個程式的捷徑(bat) · 請參考http://software.sopili.net/post/a-bat-to-run-start-multiple-exe/ · Fac...