欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久

打開(kāi)APP
userphoto
未登錄

開(kāi)通VIP,暢享免費電子書(shū)等14項超值服

開(kāi)通VIP
關(guān)于批處理的學(xué)習之三

3 賦值 調用

3.1 賦值

 

3.1.1 給變量賦予一個(gè)文字字符串的值

說(shuō)到賦值,就得先弄懂 set 這條命令。set 這條命令比較復雜,在命令提示符中鍵入 set /? 后得到的幫助信息也很多。不過(guò),簡(jiǎn)單地說(shuō),使用 set 跟上變量,再用等號 = 跟上字符串就能簡(jiǎn)單地給該變量賦值了。例如 set var=Hello world! 。為了確認一下變量 var 的值是否是 Hello world! ,可以用 set var 來(lái)查看變量 var 的值。用 set v 可以查看所有以字母 v 開(kāi)頭變量的值。直接輸入 set 可以查看所有變量的值。另外,變量?jì)蓚燃由习俜址?% 用來(lái)表示該變量的值(內容)。這樣做可以將該變量的值賦給其他變量或是用做計算顯示等處理。

 

3.1.2 給變量賦予一個(gè)數值型的值

set 后面加上 /a 的參數可以給變量賦予一個(gè)數值型的值,例如 set /a var=48 表示將數字48賦給變量var。該數值型的變量是一個(gè)32位的整數型數值,即占用4個(gè)字節,能表示的數值個(gè)數為2的32次方,含正負號,范圍為:-2147483648~2147483647。

3.1.3 從外部獲得輸入的賦值方式

set 后面加上 /p 的參數,可以將變量設成用戶(hù)輸入的一行輸入。讀取輸入行之前,顯示指定的 提示文字。當然,提示文字也可以是空的。比如 set /p var=請輸入一些文字: ,可以顯示出一段提示文字"請輸入一些文字:"并能將用戶(hù)輸入的信息存到變量var里。/p 的參數還有很多諸如對字符串的替代、提取、增減等功能,具體可以參考 set 的相關(guān)幫助信息。

3.1.4 變量的的賦予、顯示、變換、計算等功能

可能此時(shí)有些朋友對百分號 % 的理解還處于迷茫狀態(tài),對此我們可以做一些實(shí)驗。首先,就像前文所說(shuō)的那樣,給一個(gè)叫做 var 的變量賦值Hello world! (在命令行里輸入 set var=Hello world! )。然后我們的打算把變量 var 里的值賦給另一個(gè)變量 var1 ,做法是:set var1=%var% ,此時(shí) var1 里的值也是 Hello world! 了。假如不使用百分號 % 僅僅是 set var1=var 的話(huà),那么此時(shí)變量 var1 所得到的值僅僅是 var 這3個(gè)字母而已。再回顧一下 echo 的用法,分別嘗試輸入 echo var1echo %var1% ,所得到的返回輸出分別為:var1 和 Hello world! 。

此外,百分號可以對變量中的字符串有效地進(jìn)行編輯或變換。
值得一提的是替換功能,其格式為:原始變量的名稱(chēng)后面跟上冒號 : ,再加上想要被代替的內容,緊接著(zhù)一個(gè)等號 = ,然后再加上用來(lái)代替的新內容,最后用兩個(gè)百分號把以上這些包括起來(lái)即可。雖然此時(shí)原始變量的值并沒(méi)有改變,但百分號里的內容可以賦給一個(gè)變量,這個(gè)變量可以是原始變量。例:echo %var:o=z% ,效果為把 Hello world! 里所有的字母 o 都用字母 z 代替,并顯示出來(lái),然而變量 var 的值卻沒(méi)有變化。
當然,我們并不會(huì )滿(mǎn)足于僅僅是代替一個(gè)字母——有時(shí)候我們需要代替兩個(gè)。set var2=%var:ld=ms and bugs% ,這條命令可以在把 Hello world! 里的 ld 替換成 ms and bugs 并將新的結果賦給變量 var2 ,變量 var 仍然不會(huì )變化。輸入 echo %var2% 確認一下結果是否為我們所期待的 Hello worms and bugs! 。

對變量中的字符串在特定位置上的刪減將用到這樣的格式:%var:~m%%var:~m,n% 。m 和 n 為整數參數。數字 m 為正數表示取變量 var 中從左側數第 m 個(gè)字符(單字節字符)以后的內容;m 為負數則表示取變量 var 從右側數第 -m 個(gè)字符以及其右側的所有的字符,這就是第一條命令所產(chǎn)生的新字符串。如果數字 n 為正數,表示在上述新字符串中,從其左側取 n 個(gè)字符的內容;若 n 為負數,則從其左側取字符直到還剩下 -n 個(gè)字符為止的內容。

如果您堅持認為這種抽象的表達方式是根本無(wú)法解釋清楚這該死的 m 和無(wú)恥的 n 究竟是怎么回事的話(huà),不如實(shí)驗一下下面的例子。為了方便查看效果,我們假定變量 var 中的內容為 1234567890 (set var=1234567890),然后依次輸入以下命令并查看相應的結果。
輸入的命令    結果    效果                   
echo %var%    1234567890 顯示所有                 
echo %var:~4%   567890   從第4個(gè)字符以后開(kāi)始顯示         
echo %var:~4,3%  567     從第4個(gè)字符以后開(kāi)始顯示,并只顯示前3個(gè)  
echo %var:~-4%  7890    從倒數第4個(gè)字符開(kāi)始顯示         
echo %var:~-4,3% 789     從倒數第4個(gè)字符開(kāi)始顯示,并只顯示前3個(gè)  
echo %var:~4,-2% 5678    從第4個(gè)字符以后開(kāi)始顯示,顯示到還剩2個(gè)為止
echo %var:~0,3%  123     從頭開(kāi)始顯示,并只顯示前3個(gè)字符     

echo %var:~0,-3% 1234567   從頭開(kāi)始顯示,顯示到還剩3個(gè)字符為止   

 

此外,set 也可以對數值型的變量進(jìn)行常見(jiàn)的運算操作。
set /a num=48
set /a result=%num%+12
echo %result%

上面的命令表示先給數值 48 賦給變量 num ,然后再把變量 num 的數值與數值 12 相加后的結果賦給變量 result 。第3行可以顯示變量 result 的值,結果很明顯,是 60 。

 

3.2 調用

 

與很多編程類(lèi)的東西一樣,批處理并不一定非得按照文本中命令的排列順序一行一行地執行。如果遇到了 goto、call、start 這樣的跳轉、調用、啟動(dòng)等語(yǔ)句,程序通常會(huì )變得多層化,執行起來(lái)會(huì )更加有效。

3.2.1 跳轉

goto 對于多少有點(diǎn)編程基礎的朋友來(lái)說(shuō),想必不是一件難以理解的東西。goto 跟上標簽就能直接讓程序從該標簽處開(kāi)始繼續執行隨后的命令,不論標簽的位置是在該 goto 命令的前面還是后面。標簽必須以單個(gè)冒號 : 開(kāi)頭,但不區分大小寫(xiě)。有個(gè)特殊的標簽 :EOF:eof 能將控制轉移到當前批腳本文件的結尾處,它是不需要事先定義的。
::::::::::::跳轉.bat::::::::::::

@echo off
goto :FirstLable

:SecondLable
echo 然后顯示這句
pause
goto :EOF

:FirstLable
echo 首先顯示這句
pause
goto :SecondLable

::::::::::::::::::::::::::::::::

3.2.2 調用

call 主要體現在兩個(gè)方面:一是調用該批處理以外的另一個(gè)批處理(事實(shí)上調用該批處理本身也可以,只是可能會(huì )帶來(lái)不必要的死循環(huán));另一方面是有著(zhù)與 goto 類(lèi)似的向特定標簽處跳轉的功能。然而,call 的獨特之處在于:在調用的批處理或標簽后的內容處理完成以后,控制會(huì )繼續執行 call 后面的語(yǔ)句。我們先來(lái)看一下用 call 進(jìn)行跳轉的效果。為了方便對比,我們將上面的批處理作如下修改(淺色文字為修改部分)。
::::::::::::跳轉.bat::::::::::::
@echo off
call :FirstLable

:SecondLable
echo 然后顯示這句
pause
goto :EOF

:FirstLable
echo 首先顯示這句
pause
::goto :SecondLable
::::::::::::::::::::::::::::::::

在用 call 跳轉到 :FirstLabel 處執行到程序結尾后(此時(shí) call 的任務(wù)才剛剛完成),會(huì )繼續回到 call 語(yǔ)句后的 :SecondLabel 處。假如 goto :SecondLabel 這一句沒(méi)有被注釋掉的話(huà),那么控制會(huì )跳轉到 :SecondLabel 處直到 goto :EOFcall 的使命才真正完成。而且,call 在完成任務(wù)后,下面的 :SecondLabel 處內容會(huì )再次執行一遍。

call 作為調用其他新的批處理的用途時(shí),當前批處理就會(huì )暫停,直到新的批處理結束后,之前的批處理才會(huì )繼續執行。例如:直接調用當前路徑里的一個(gè)批處理 call test.bat ,或是要調用的批處理在當前路徑向上一級的abc文件夾里 call ..\abc\test.bat ,也可以使用絕對路徑找到目標批處理 call D:\abc\test.bat (路徑的寫(xiě)法請參閱[前言]里命令 cd 的用法介紹)。當然,一個(gè)最直觀(guān)的例子往往更能說(shuō)明問(wèn)題。建立兩個(gè)批處理(假設他們在同一路徑下)"調用.bat"和"被調用.bat",它們的內容分別為:
::::::::::::調用.bat::::::::::::
@echo off
echo 這里是 調用.bat
pause

call 被調用.bat

echo 現在又回到了 調用.bat
pause

::::::::::::::::::::::::::::::::

:::::::::::被調用.bat:::::::::::
echo 這里是 被調用.bat
pause

::::::::::::::::::::::::::::::::
編輯并保存好這兩個(gè)批處理,然后運行批處理"調用.bat",所得到的結果跟我們預期的完全一致。

3.2.3 啟動(dòng)

start 雖然也不是一個(gè)簡(jiǎn)單的命令,但用法絕對不難理解。來(lái)幾個(gè)例子:start msconfig 用來(lái)打開(kāi)"系統配置應用程序";start notepad 則可以打開(kāi)一個(gè)記事本;start "這就是所謂的標題" cmd 用來(lái)打開(kāi)一個(gè)新的命令提示符;start "隨便寫(xiě)個(gè)標題" http://www.baidu.com 便打開(kāi)百度的首頁(yè);而 start "開(kāi)玩了" E:\game\starcraft\starcraft.exe 卻是開(kāi)始星際爭霸(如果您的電腦里安裝了星際且路徑與上述一致的話(huà))等等。雖然 start 的參數很多(具體用法在輸入 help start 后可以得到),但通常情況下我們只需要知道 start 后面加上標題,再跟上想要執行程序、命令或網(wǎng)址即可。值得注意的是:標題要用雙引號引用起來(lái),否則會(huì )被作為可執行的文件來(lái)處理;所要執行的東西如果不是系統內部程序或命令的話(huà),則需要我們給出具體的路徑,比如絕對路徑。
當然,start 也可以打開(kāi)另外一個(gè)批處理。這看起來(lái)似乎與 call 相仿,卻有一些區別。為了對比 callstart 之間的效果差異,可以在上一個(gè)例子中修改"調用.bat"中的 call 被調用.batstart 被調用.bat 。從"調用.bat"開(kāi)始執行后,"被調用.bat"也的確能夠被調用。但之前的批處理也同時(shí)繼續執行著(zhù)。事實(shí)上,此時(shí)這兩個(gè)程序已經(jīng)完全獨立開(kāi)了,是兩個(gè)獨立的進(jìn)程。

 

3.3 參數

上文提到了調用,這里就不得不補充一下參數。何謂參數?假如您要使用命令 dir ,那后面所跟的路徑文件名也好、/p (分頁(yè)顯示)也好、/w (寬列表顯示)也好、又或者是 /s (所有目錄及子目錄)也好,這些都能被稱(chēng)作為參數。對于一條命令來(lái)說(shuō),它除了能返回(輸出)給我們一些信息以外,我們還經(jīng)常給它輸入一些信息,被輸入的信息就是參數;然而,對于一個(gè)批處理來(lái)說(shuō),它除了能為我們工作(輸出結果)以外,有時(shí)也需要外界給他一些信息。

3.3.1 參數的傳遞

為了很好的認識到這一點(diǎn),我們先稍微修改一下上文所使用的"被調用.bat"這個(gè)批處理文件,使之能夠接受處理外界給它的輸入參數。
:::::::::::被調用.bat:::::::::::
echo 這里是 被調用.bat
echo 您輸入的第1條參數為 %1
echo 您輸入的第2條參數為 %2

pause

::::::::::::::::::::::::::::::::
其中,%1%2 分別代表運行"被調用.bat"批處理時(shí)所跟的兩個(gè)參數。那么它該如何獲得所謂的參數1和參數2呢。雙擊運行"被調用.bat"當然是不行的了??梢栽诿钐崾痉镙斎?被調用.bat"的全名,并在后面加上兩個(gè)參數即可(如果"被調用.bat"不在當前工作路徑,需要輸入"被調用.bat"的路徑,比如絕對路徑,以便讓計算機找到它)。就像:D:\批處理\test\被調用.bat Tom and Jerry 。運行時(shí)我們會(huì )發(fā)現 %1%2 分別顯示為 Tom 和 and ,Jerry 為作為第3個(gè)參數來(lái)處理,但該批處理中卻未用到 %3 。提示:在XP等操作系統中,對于漢字的輸入可用 Ctrl + 空格 切換出中文輸入法;也可以按 Tab 鍵讓其自動(dòng)切換并補充完成您所想要輸入的路徑。

為了進(jìn)一步驗證這一點(diǎn),我們再改一下批處理"調用.bat",讓它在調用其他批處理時(shí)加上參數
::::::::::::調用.bat::::::::::::
@echo off
echo 這里是 調用.bat
pause

call 被調用.bat Hello world!

echo 現在又回到了 調用.bat
pause

::::::::::::::::::::::::::::::::

3.3.2 參數的輸入與輸出

參數不僅可以是值,也可以是變量。如果是變量的話(huà),它既可以作為輸入,也可以作為輸出。為此,我們需要分別再改一次"調用.bat"和"被調用.bat"。

::::::::::::調用.bat::::::::::::
@echo off
echo 這里是 調用.bat
pause

set /p Num=請輸入一個(gè)整數:
set Square=

call 被調用.bat Num Square

echo 現在又回到了 調用.bat ,而且,%Num% 的平方是 %Square% 。
pause

::::::::::::::::::::::::::::::::

:::::::::::被調用.bat:::::::::::
echo 這里是 被調用.bat
echo 您輸入的第1條參數為 %1
echo 您輸入的第2條參數為 %2

set /a %2 = %1 * %1

echo 經(jīng)過(guò)計算后,您輸入的第1條參數為 %1
echo 經(jīng)過(guò)計算后,您輸入的第1條參數為 %2

pause

::::::::::::::::::::::::::::::::

可以看出,變量 Num 和 Square 在"被調用.bat"中是作為值來(lái)看待的,而不是變量。另外,嘗試將"調用.bat"中的 call 被調用.bat Num Square 換為 call 被調用.bat %Num% Square ,然后再對比一下結果,相信您一定會(huì )有所收獲。

3.3.3 函數

在一個(gè)批處理的內部調用時(shí),使用參數會(huì )怎么樣呢?那么這就是函數的雛形。把之前的"跳轉.bat"稍微也改一下
::::::::::::跳轉.bat::::::::::::
@echo off
call :FirstLable 很好很強大

:SecondLable
echo 然后顯示這句
pause
goto :EOF

:FirstLable
echo 首先顯示這句,后面跟的參數為 %1
pause

::::::::::::::::::::::::::::::::

對于 goto 所跟的標簽或 start 所跟的程序,它們后面能否加參數呢?答案是:前者是否定的;后者是肯定的,試試看。

3.4 后記

 

寫(xiě)了那么多天,也許我們應該來(lái)點(diǎn)更實(shí)際更有用的東西。前幾天無(wú)意中發(fā)現了一個(gè)163郵箱登錄器,在此作為例子介紹一下。

本站僅提供存儲服務(wù),所有內容均由用戶(hù)發(fā)布,如發(fā)現有害或侵權內容,請點(diǎn)擊舉報。
打開(kāi)APP,閱讀全文并永久保存 查看更多類(lèi)似文章
猜你喜歡
類(lèi)似文章
Bat命令學(xué)習
批處理總結
批處理bat最完整人性化教程
windows批處理 (cmd/bat) 編程詳解
DOS批處理高級教程:第一章 批處理基礎
第八課:批處理變量
更多類(lèi)似文章 >>
生活服務(wù)
分享 收藏 導長(cháng)圖 關(guān)注 下載文章
綁定賬號成功
后續可登錄賬號暢享VIP特權!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服

欧美性猛交XXXX免费看蜜桃,成人网18免费韩国,亚洲国产成人精品区综合,欧美日韩一区二区三区高清不卡,亚洲综合一区二区精品久久