3 賦值 調(diào)用 3.1 賦值
3.1.1 給變量賦予一個文字字符串的值 說到賦值,就得先弄懂 set 這條命令。set 這條命令比較復雜,在命令提示符中鍵入 set /? 后得到的幫助信息也很多。不過,簡單地說,使用 set 跟上變量,再用等號 = 跟上字符串就能簡單地給該變量賦值了。例如 set var=Hello world! 。為了確認一下變量 var 的值是否是 Hello world! ,可以用 set var 來查看變量 var 的值。用 set v 可以查看所有以字母 v 開頭變量的值。直接輸入 set 可以查看所有變量的值。另外,變量兩側(cè)加上百分符號 % 用來表示該變量的值(內(nèi)容)。這樣做可以將該變量的值賦給其他變量或是用做計算顯示等處理。
3.1.2 給變量賦予一個數(shù)值型的值 在 set 后面加上 /a 的參數(shù)可以給變量賦予一個數(shù)值型的值,例如 set /a var=48 表示將數(shù)字48賦給變量var。該數(shù)值型的變量是一個32位的整數(shù)型數(shù)值,即占用4個字節(jié),能表示的數(shù)值個數(shù)為2的32次方,含正負號,范圍為:-2147483648~2147483647。 3.1.3 從外部獲得輸入的賦值方式 在 set 后面加上 /p 的參數(shù),可以將變量設成用戶輸入的一行輸入。讀取輸入行之前,顯示指定的 提示文字。當然,提示文字也可以是空的。比如 set /p var=請輸入一些文字: ,可以顯示出一段提示文字"請輸入一些文字:"并能將用戶輸入的信息存到變量var里。/p 的參數(shù)還有很多諸如對字符串的替代、提取、增減等功能,具體可以參考 set 的相關(guān)幫助信息。 3.1.4 變量的值的賦予、顯示、變換、計算等功能 可能此時有些朋友對百分號 % 的理解還處于迷茫狀態(tài),對此我們可以做一些實驗。首先,就像前文所說的那樣,給一個叫做 var 的變量賦值Hello world! (在命令行里輸入 set var=Hello world! )。然后我們的打算把變量 var 里的值賦給另一個變量 var1 ,做法是:set var1=%var% ,此時 var1 里的值也是 Hello world! 了。假如不使用百分號 % 僅僅是 set var1=var 的話,那么此時變量 var1 所得到的值僅僅是 var 這3個字母而已。再回顧一下 echo 的用法,分別嘗試輸入 echo var1 和 echo %var1% ,所得到的返回輸出分別為:var1 和 Hello world! 。 此外,百分號可以對變量中的字符串有效地進行編輯或變換。 對變量中的字符串在特定位置上的刪減將用到這樣的格式:%var:~m% 和 %var:~m,n% 。m 和 n 為整數(shù)參數(shù)。數(shù)字 m 為正數(shù)表示取變量 var 中從左側(cè)數(shù)第 m 個字符(單字節(jié)字符)以后的內(nèi)容;m 為負數(shù)則表示取變量 var 從右側(cè)數(shù)第 -m 個字符以及其右側(cè)的所有的字符,這就是第一條命令所產(chǎn)生的新字符串。如果數(shù)字 n 為正數(shù),表示在上述新字符串中,從其左側(cè)取 n 個字符的內(nèi)容;若 n 為負數(shù),則從其左側(cè)取字符直到還剩下 -n 個字符為止的內(nèi)容。 如果您堅持認為這種抽象的表達方式是根本無法解釋清楚這該死的 m 和無恥的 n 究竟是怎么回事的話,不如實驗一下下面的例子。為了方便查看效果,我們假定變量 var 中的內(nèi)容為 1234567890 (set var=1234567890),然后依次輸入以下命令并查看相應的結(jié)果。
此外,set 也可以對數(shù)值型的變量進行常見的運算操作。
3.2 調(diào)用
與很多編程類的東西一樣,批處理并不一定非得按照文本中命令的排列順序一行一行地執(zhí)行。如果遇到了 goto、call、start 這樣的跳轉(zhuǎn)、調(diào)用、啟動等語句,程序通常會變得多層化,執(zhí)行起來會更加有效。 3.2.1 跳轉(zhuǎn) goto 對于多少有點編程基礎的朋友來說,想必不是一件難以理解的東西。goto 跟上標簽就能直接讓程序從該標簽處開始繼續(xù)執(zhí)行隨后的命令,不論標簽的位置是在該 goto 命令的前面還是后面。標簽必須以單個冒號 : 開頭,但不區(qū)分大小寫。有個特殊的標簽 :EOF 或 :eof 能將控制轉(zhuǎn)移到當前批腳本文件的結(jié)尾處,它是不需要事先定義的。 :SecondLable :FirstLable 3.2.2 調(diào)用 call 主要體現(xiàn)在兩個方面:一是調(diào)用該批處理以外的另一個批處理(事實上調(diào)用該批處理本身也可以,只是可能會帶來不必要的死循環(huán));另一方面是有著與 goto 類似的向特定標簽處跳轉(zhuǎn)的功能。然而,call 的獨特之處在于:在調(diào)用的批處理或標簽后的內(nèi)容處理完成以后,控制會繼續(xù)執(zhí)行 call 后面的語句。我們先來看一下用 call 進行跳轉(zhuǎn)的效果。為了方便對比,我們將上面的批處理作如下修改(淺色文字為修改部分)。 :SecondLable :FirstLable 當 call 作為調(diào)用其他新的批處理的用途時,當前批處理就會暫停,直到新的批處理結(jié)束后,之前的批處理才會繼續(xù)執(zhí)行。例如:直接調(diào)用當前路徑里的一個批處理 call test.bat ,或是要調(diào)用的批處理在當前路徑向上一級的abc文件夾里 call ..\abc\test.bat ,也可以使用絕對路徑找到目標批處理 call D:\abc\test.bat (路徑的寫法請參閱[前言]里命令 cd 的用法介紹)。當然,一個最直觀的例子往往更能說明問題。建立兩個批處理(假設他們在同一路徑下)"調(diào)用.bat"和"被調(diào)用.bat",它們的內(nèi)容分別為: call 被調(diào)用.bat echo 現(xiàn)在又回到了 調(diào)用.bat :::::::::::被調(diào)用.bat::::::::::: 3.2.3 啟動 start 雖然也不是一個簡單的命令,但用法絕對不難理解。來幾個例子:start msconfig 用來打開"系統(tǒng)配置應用程序";start notepad 則可以打開一個記事本;start "這就是所謂的標題" cmd 用來打開一個新的命令提示符;start "隨便寫個標題" http://www.baidu.com 便打開百度的首頁;而 start "開玩了" E:\game\starcraft\starcraft.exe 卻是開始星際爭霸(如果您的電腦里安裝了星際且路徑與上述一致的話)等等。雖然 start 的參數(shù)很多(具體用法在輸入 help start 后可以得到),但通常情況下我們只需要知道 start 后面加上標題,再跟上想要執(zhí)行程序、命令或網(wǎng)址即可。值得注意的是:標題要用雙引號引用起來,否則會被作為可執(zhí)行的文件來處理;所要執(zhí)行的東西如果不是系統(tǒng)內(nèi)部程序或命令的話,則需要我們給出具體的路徑,比如絕對路徑。
3.3 參數(shù) 上文提到了調(diào)用,這里就不得不補充一下參數(shù)。何謂參數(shù)?假如您要使用命令 dir ,那后面所跟的路徑文件名也好、/p (分頁顯示)也好、/w (寬列表顯示)也好、又或者是 /s (所有目錄及子目錄)也好,這些都能被稱作為參數(shù)。對于一條命令來說,它除了能返回(輸出)給我們一些信息以外,我們還經(jīng)常給它輸入一些信息,被輸入的信息就是參數(shù);然而,對于一個批處理來說,它除了能為我們工作(輸出結(jié)果)以外,有時也需要外界給他一些信息。 3.3.1 參數(shù)的傳遞 為了很好的認識到這一點,我們先稍微修改一下上文所使用的"被調(diào)用.bat"這個批處理文件,使之能夠接受處理外界給它的輸入?yún)?shù)。 為了進一步驗證這一點,我們再改一下批處理"調(diào)用.bat",讓它在調(diào)用其他批處理時加上參數(shù) call 被調(diào)用.bat Hello world! echo 現(xiàn)在又回到了 調(diào)用.bat 3.3.2 參數(shù)的輸入與輸出 參數(shù)不僅可以是值,也可以是變量。如果是變量的話,它既可以作為輸入,也可以作為輸出。為此,我們需要分別再改一次"調(diào)用.bat"和"被調(diào)用.bat"。 ::::::::::::調(diào)用.bat:::::::::::: :::::::::::被調(diào)用.bat::::::::::: 可以看出,變量 Num 和 Square 在"被調(diào)用.bat"中是作為值來看待的,而不是變量。另外,嘗試將"調(diào)用.bat"中的 call 被調(diào)用.bat Num Square 換為 call 被調(diào)用.bat %Num% Square ,然后再對比一下結(jié)果,相信您一定會有所收獲。 3.3.3 函數(shù) 在一個批處理的內(nèi)部調(diào)用時,使用參數(shù)會怎么樣呢?那么這就是函數(shù)的雛形。把之前的"跳轉(zhuǎn).bat"稍微也改一下 :SecondLable :FirstLable 對于 goto 所跟的標簽或 start 所跟的程序,它們后面能否加參數(shù)呢?答案是:前者是否定的;后者是肯定的,試試看。 3.4 后記
寫了那么多天,也許我們應該來點更實際更有用的東西。前幾天無意中發(fā)現(xiàn)了一個163郵箱登錄器,在此作為例子介紹一下。 |
|
來自: daomucun > 《電腦技術(shù)》