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