-
1.1 什么是批處理?
從內容上看,批處理文件包含了大量的基本DOS命令,是一種可執行文件。該文件運行時能按照其規則將其中的命令逐一執行。使用批處理文件進行的批量的命令處理的過程,稱之為批處理。
批處理文件(Batch File,簡稱BAT文件)是一種在DOS下最常用的可執行文件。它具有靈活的操縱性,可適應各種復雜的計算機操作。所謂的批處理,就是按規定的順序自動執行若干個指定的DOS命令或程序。即是把原來一個一個執行的命令匯總起來,成批的執行,而程序文件可以移植到其它電腦中運行,因此可以大大節省命令反復輸入的繁瑣。同時批處理文件還有一些編程的特點,可以通過擴展參數來靈活的控制程序的執行,所以在日常工作中非常實用。
批處理文件的后綴名為.bat(Batch的縮寫)。可以用絕大多數的文本編輯工具進行編輯。由于批處理文件的實質就是一個命令的集合,所以批處理文件的工作平臺是由這些命令所工作的平臺來決定,如今Microsoft環境下的批處理文件(.bat和.cmd文件)的平臺,當然也就是Microsoft的DOS和Windows系統。
-
1.2 了解與使用基本DOS命令
說到批處理,我們不得不先討論一些基本的DOS命令。對于“命令”("Command")一詞,實際上就體現了我們與計算機的交流過程。比如,您可以通過使用鼠標點擊“開始”,選擇關機來命令計算機執行關閉計算機的行動;您也可以通過只是簡單地雙擊一下桌面上的《星際爭霸》快捷方式來讓計算機運行《星際爭霸》這款經典的即時戰略游戲。也許您認為這些命令就如同吃飯睡覺一樣簡單,這是因為圖形化界面已經為我們把復雜難以理解的命令操作封裝成人人都能非常容易上手的操作方式,使得我們只需要點點鼠標或是敲幾下鍵盤就能輕而易舉地完成。
而DOS命令,對于不少新接觸計算機的朋友來說可能是一個高深而神秘的詞。不過,如果您多少還懂點英語的話,這些問題可能就變得是很容易被理解的。假如我們打算把電腦D盤里的一個叫做"a.txt"的文本文件復制到E盤里,您也許能夠提出使用Ctrl+C復制該文件,然后再在E盤中Ctrl+V將其粘貼到此處;或是建議按住Ctrl鍵然后直接拖動到E盤,又或是用右鍵拖動后再選擇,等等。這些都是圖形界面里的操作,如果我們想用DOS命令來實現這一操作該如何去做呢?copy D:\a.txt E:\a.txt
這句英文看起來更像是在嘗試與電腦進行聊天。不過您必須得保證您的發言有著嚴格正確的格式,電腦才會按照您的意圖去執行。以下為常用文件操作DOS命令:
dir 列文件名
cd 改變當前目錄
ren 改變文件名
copy 拷貝文件
del 刪除文件
md 建立子目錄
rd 刪除目錄
deltree 刪除目錄樹
format 格式化磁盤
edit 文本編輯
type 顯示文件內容
mem 查看內存狀況
以下是新增加的命令
help 顯示幫助提示
cls 清屏
move 移動文件,改目錄名
more 分屏顯示
xcopy 拷貝目錄和文件
僅僅是告訴您有哪些命令可以使用,此時您仍不會明白DOS命令的操作用法。我們不妨從例子中學習并理解。
可以在 開始->所有程序->附件->命令提示符 找到并打開MS-DOS命令提示符。或是按WIN鍵(鍵盤上有微軟標示的那個按鍵)再按R鍵,然后輸入 cmd 并按回車,也能打開命令提示符。無論您對這個黑色而單調的界面感到是多么的新奇、或是陌生、甚至是厭惡,此時您都不會再計較了,重要的是您得嘗試一下所謂的DOS命令。如果您正在用Windows XP操作系統(XP自帶的DOS5使用方便,便于理解,以下均以XP操作系統為例進行說明),您將可能看到有類似 C:\Documents and Settings\Administrator> 的這么一行文字。這說明,您此時的工作位置就在 C:\Documents and Settings\Administrator 里。當然 Administrator 也可能是別的詞,這取決于您當前登錄的用戶名以及該用戶所設定文件夾的名稱。而使用 Windows9X 操作系統的命令提示符將會看到經典的 C:\WIDNOWS> 。
此時我們來嘗試一下使用一些基本的DOS命令,
比如,鍵入 dir
[(不區分大小寫)]并按回車后,我們會得到當前文件夾下所有的子文件夾和文件的相關信息。輸入dir c:\windows
,可以查看指定的路徑文件夾(這里假定我們指定的文件夾是C盤的WINDOWS文件夾)中的信息。在輸入該命令后,只見刷地一下啥也沒看清,N多文件或文件夾就已一閃而過,因為一個屏幕無法顯示這么多的文件或文件夾。好在在DOS5中我們可以用鼠標滾輪向前滾動查看更多的內容。然而,早期的DOS版本并不具有保存多頁信息的功能,我們不妨使用 dir 的一些參數(適當的參數加在相應的命令后面可以實現更多的擴展功能),比如 /p ,即輸入 dir c:\windows /p
。這樣就能在每顯示一個屏幕的內容后暫停一下以便查看。
關于 dir 命令的用法和參數還有更多。除了 dir 以外,每一種命令的用法和參數都不少。看到這里您也許會覺得很沮喪,認為自己沒有天賦、也沒有工夫來死記硬背這些該死的命令。事實上我也有同感。命令的具體用法在幫助里、在網上都能輕而易舉地找到。只要輸入 dir /?
就能得到關于dir命令完整的使用介紹,而且是中文的。同理,任何命令后面跟上 【/?】的參數,都能得到該命令的完整說明。當然,也可以在網上搜索"DOS命令"等關鍵字來查找具體的DOS用法(推薦一個洪恩在線)。我們所需要的只是知道執行什么操作時用什么命令就行了,即使是連命令的名稱都記不得了也沒關系,都是現學現用的嘛。
很多情況下,我們只需要記住一條命令help
,就能掌握整個DOS命令。比如直接輸入 help 可以得到命令的幫助信息。輸入help dir
就能得到命令 dir 的具體參數及其用法(等同與 dir /?
)。不僅僅是DOS命令,很多帶有命令提示的工具都有help提供幫助和提示,例如MATLAD中的命令行,又如BattleNet中的以斜杠 / 開頭的命令等等。
下面以一段例子來介紹DOS命令的具體用法(灰色背景的文字為DOS命令,可以嘗試在命令提示符中輸入測試查看效果)。
d:
轉到驅動器D盤下,此時我們能看到 D:> 的提示符(前提是您的電腦硬盤必須至少劃分出D盤)。如果看到的不是就再輸入下一行命令。
cd\
這一條命令 cd 的作用是改變當前的工作目錄,后面加上 \ 表示返回到該驅動器的最頂級目錄。另外,一個句點【.】 表示當前文件夾,兩個連續的句點【..】 則表示上一級文件夾, cd..
即目錄向上一級。
md test
正如前文所說,命令 md 的作用是創建子目錄,此時打開D盤看一看,是不是多了一個名叫test的文件夾(如果不是事先早已存在的話)。事實上該命令的完整寫法為md d:\test
,由于當前目錄已經在D盤了,所以我們把具體的路徑給簡化了。
md "test my folder"
同理,在D盤創建一個名為test my folder的文件夾。** 加雙引號的目的是告訴計算機我們要創建一個名字中含有空格的文件夾,而不是分別創建名字分別為test、my和folder的3個不同的文件夾 *。注:除了空格以外,在路徑或文件名中含有 &()[]{}^=;!'+,~ 特殊字符時也需要用雙引號引用起來,以便機器能夠正確地識別。 *
cd test 改變當前工作目錄,此時不再是D盤了,而是在 D:\test 的目錄下。
echo Hello world>a.txt 遇到了一個新命令 echo ,它可以將某某內容顯示出來。只考慮 echo Hello world 就是把字符串 Hello world 顯示出來而已。后面使用了符號 > 表示將這句 Hello world 寫入到某文件中。結果為:在 D:\test 文件夾里多了一個叫 a.txt 的文件,其內容為 Hello world 。
copy a.txt "d:\test my folder" 這就是將當前文件夾里的那個 a.txt 文件復制到 D:\test my folder 文件夾中
copy a.txt "..\test my folder\b.txt" 還是復制 a.txt ,但這次的路徑與上一條命令的寫法不同。 .. 表示先向上一級,再挪到 test my folder 文件夾里。其實還是復制到 D:\test my folder 這個文件夾里了。這次復制過去的文件名也不一樣,因為這次我們指定了要復制過去的目標文件名為 b.txt 。
copy a.txt "..\test my folder\c.bmp" 再次復制 a.txt 到同樣的文件夾里。不過這次不光改文件的標題名了,連文件的后綴名也改了。打開 D:\test my folder 文件夾檢查一下,是不是多了名字分別叫 a.txt b.txt c.bmp 的3個文件。
cd.. 向上一級
cd "test my folder" 進入 D:\test my folder 文件夾
ren c.bmp d.bin 重新命名文件 c.bmp 為 d.bin 。 完整地寫法為
ren "d:\test my folder\c.bmp" d.bin 。
del *.txt 刪除當前工作目錄中所有文件后綴名為 .txt 的文件。** 【\*】表示通配符。例如:a.* 表示所有文件標題為 a 的文件,不論后綴名。 【.】 則表示任何標題名和任何后綴名的文件,即所有文件。**此時結果應為:該目錄里的 a.txt b.txt 這兩個文件已經不存在了,即使是在回收站里也找不到了。
cd.. 向上一級
rd test "test my folder" 這一條命令是想同時移除 test 和 test my folder 這兩個文件夾。不過結果并沒有成功,因為它會提示:目錄不是空的。test 文件夾中有 a.txt ,test my folder 文件夾中還有 d.bin ,因此文件夾刪不掉。
rd test "test my folder" /s `
如果加上 /s 這個參數后就能刪除這兩個文件夾以及其文件夾中所包含的所有內容了。注意:刪除前請確認這些文件夾是否是您以前就有的文件夾,或者說里面是否存有任何有用文件,不要因為這個測試而丟掉了重要文件。
-
1.3 我們的第一個批處理
在閱讀本文之前您可能還對此一無所知,而現在您卻已經略知一二了。如果您還無法理解DOS命令的工作原理或方式,在繼續閱讀下文之前,強烈建議具體操作實踐一下。
不過說了那么多,看起來似乎還沒進入正題,您可能會不耐煩地說:目前批處理連個影子都沒見到呢。如果我們只是簡單地將上述例子中的命令集合起來,那么這就形成了一個批處理。做法是:先打開記事本,把下面這些您已經了如指掌(或者說只是略知一二)的命令復制進去。然后保存到某處(比如桌面),并命名為 MyFirstBatch.bat (文件標題可自擬,但后綴名必須是.bat)。
md "d:\test" "d:\test my folder"
echo Hello world>"d:\test\a.txt"
copy "d:\test\a.txt" "d:\test my folder"
copy "d:\test\a.txt" "d:\test my folder\b.txt"
copy "d:\test\a.txt" "d:\test my folder\c.bmp"
ren "d:\test my folder\c.bmp" d.bin
看到了吧!驚喜吧!瘋狂吧!一個自己寫的,或者說至少是自己已經能夠完全理解的批處理文件 MyFirstBatch.bat 就這樣誕生了。或許此時您對這東西能否正常工作還持有懷疑態度,但是在看到對該批處理文件雙擊運行完的結果以后,先前或多或少的懷疑也就蕩然無存了……
雙擊后,顯示的只是一閃就關閉了。正確的結果是在D盤多了名字分別為 test 和 test my folder 的兩個文件夾。文件夾 test 里有一個叫 a.txt 的文件。而文件夾 test my folder 里有名字分別為 a.txt b.txt 和 d.bin 的3個文件。