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