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