|
call有幾種用法
第一種用法,也就是最常用的一種,調(diào)用另一個(gè)批處理,在被調(diào)用的批處理執(zhí)行完后在執(zhí)行call下面的命令。如:
@echo off
call a.bat
dir c:\
pause
如果在被調(diào)用的批處理里面有參數(shù),調(diào)用的時(shí)候需要在后面加上參數(shù)。
如:
a.bat內(nèi)容:
@echo off
echo %0 %1
b.bat內(nèi)容:
@echo off
call a.bat hello
dir c:\
pause
那么,在執(zhí)行b.bat的時(shí)候,會(huì)將hello賦值給%1,而%0代表a.bat自己。
(在批處理中,可以使用%*代表所有參數(shù)%1-%9代表9個(gè)參數(shù),%0代表批處理自己,其擴(kuò)展用法見call /?,在講for的時(shí)候也會(huì)講到)
在這里講下goto :eof的用法,如:
a.bat內(nèi)容:
@echo off
echo %0 %1
goto :eof
b.bat內(nèi)容:
@echo off
call a.bat hello
dir c:\
pause
這里,在顯示完hello后,會(huì)執(zhí)行dir c:\并暫停,如果將goto :eof改成exit,在顯示完hello后就會(huì)自動(dòng)退出。因?yàn)?font face="Times New Roman">goto :eof后會(huì)轉(zhuǎn)到a.bat結(jié)尾,即只退出a.bat然后會(huì)繼續(xù)執(zhí)行dir;由于call a.bat,在執(zhí)行a.bat和b.bat是一個(gè)CMD窗口,exit的話就會(huì)直接退出這個(gè)窗口,這就是goto :eof和exit區(qū)別。
call的第二種用法,調(diào)用一個(gè)命令,如:call ping 127.1,這和直接ping 127.1看似是一樣的,但還是有區(qū)別的。主要用法就是call set,在后面講延遲環(huán)境變量的時(shí)候慢慢體會(huì)。
call的第三種用法,調(diào)用一個(gè)應(yīng)用程序,call notepad.exe。call可以這么用,但一般在調(diào)用應(yīng)用程序的時(shí)候會(huì)使用start,很少用call。
call的第四種用法,調(diào)用本批處理中的一個(gè)標(biāo)簽。如:
@echo off
call :no1
start notepad.exe
exit
:no1
start calc
ping /n 2 127.1>nul
在這里會(huì)先打開計(jì)算器,然后打開記事本。在call標(biāo)簽的時(shí)候要加上“:”。
這與goto有什么區(qū)別呢?在看一個(gè)例子:
@echo off
goto :no1
start notepad.exe
exit
:no1
start calc
ping /n 2 127.1>nul
這里只會(huì)打開計(jì)算器,并不打開記事本。
因?yàn)椋?font face="Times New Roman">goto :no1是轉(zhuǎn)到標(biāo)簽:no1處運(yùn)行,運(yùn)行完就退出,而call是調(diào)用:no1,運(yùn)行完繼續(xù)執(zhí)行call下面的命令
|
|