2010年10月31日 星期日

BAT大補帖 - First BAT (01)

在Linux下與Windows下,都有一個script的東西。
script顧名思義就是一個腳本。
就是原本要執行的二十個指令,寫在一個script中,系統由檔案中,逐行執行~
為什麼要這麼做呢?
如果常常使用指令模式在操作電腦,常常會輸入不同的指令與不同的參數,而其中可能會有許多重覆的部分,正所謂,「做重複的事情是罪惡的」,所以,我們才要把寫在一個script檔案中,讓之後可以重複利用,結省所謂的時間。

而makefile也是另一種script,但是,他算是比較進階且較我們要討論的script嚴謹。在某一些情況,要達到一樣的結果,在makefile要寫好幾行,而在script只需要寫一行。所以,我認為makefile與script都需要去學習,因為,它們都是節省重複動作的工具,值的學習!

而這一個script在windows下,就稱為bat file。

寫第一個bat程式
hello.bat

REM show message
ECHO "Hello Bat!!"
PAUSE

1. 以REM開頭的就是註解,就像C語言中的//
註解後面的東西是不會被執行的。
2. ECHO這一個指令是非常重要的,就像printf一樣,我們可以在程式中途插入一個echo,印出我們想了解某一個變數目前的數值,看是不是我們想要的數值。
3. 當script執行到PAUSE時,會停在PAUSE的地方,等待使用者輸入任意鍵再繼續。這一個指令在BAT檔中,debug是非常需要的。在bat的debug是非常弱的,他不會跟你說你第幾行出現錯誤,必需要使用PAUSE來下斷點,了解在執行哪一行後,才出現錯誤。

當執行完後,你會發現,怎麼程式碼每一行指令都被印出來啊?
我們可以在檔案的最上面透過ECHO OFF關掉這一個功能。
嗯,確實有效,但是還是會出現ECHO OFF這一個字串還是會被顯示出現。
這個時候在ECHO OFF前面加入@,表示不顯示目前這一行程式。
再執行,結果看起來清爽多了~
另外,ECHO後面也可以印出變數的內容,目前就是把USERNAME的內容印出來,要提取變數內容,必需要透過%,把變數名稱夾起來~
hello.bat
@ECHO OFF
REM show message
ECHO "Hello %USERNAME%!!"
PAUSE


另外,要善用說明檔~
help印出目前系統可以使用的指令
ECHO /?
PAUSE /?
CMD /?
通常裡面會有很多解釋和例子,值的參考!!

進階用法
Q: 為了排版,如何印出一個空白行?
A: ECHO.

[總結]
在這裡,你應該學會了以下指令或關鍵字的用法
ECHO
PAUSE
HELP
REM
@

沒有留言: