如何在Windows下撰寫批次檔,簡化常態性工作? | iThome

文章推薦指數: 80 %
投票人數:10人

... 可以搭配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如何技術出海 更多專題報導



請為這篇文章評分?