它可以提高程式的reuse,可以讓程式更精簡!
CALL與GOTO最大的不同在於
GOTO是直接跳到設定的LABEL,並且不會跳回來。
而CALL與GOTO :EOF配合,當被跳到目的的程式執行完時(執行到GOTO :EOF),會跳回執行CALL的程式的下一行。
例:
call_a.bat
@ECHO OFF
ECHO Hello World!!
CALL :Money
ECHO Good Morning!!
CALL :Money
GOTO :END
:Money
ECHO Hello Money!!
GOTO :EOF
:END
PAUSE
大家想像一下,若:Money這一段的程式有到一百行,你執行兩次CALL :Money不就節省了一百行的指令嗎?
若有寫過C語言的話,那就把GOTO :EOF當作return這一個關鍵字吧~
同時,call指令後面可以接傳入的參數。
例:
call_b.bat
@ECHO OFF
ECHO Hello World!!
CALL :Money 100 "300 - 200"
ECHO Good Morning!!
CALL :Money 200 "400 - 200"
GOTO :END
:Money
ECHO Hello %1 Money!!
ECHO The procedure is %~2
GOTO :EOF
:END
PAUSE
第一個CALL後面會接兩個參數,分別是100與"300 - 200",而為什麼要用雙引號把它括起來哩~因為,BAT是以空白當作參數的區隔,所以,若你傳入的參數中內含空白的話,就必需要用雙引號把它括起來。
而%1分別%~2分別就是代表傳進來的參數,另外,為什麼%1不需要加~
而%~2中間確需要加入~這一個符號哩,有加~符號的,會把參數的值的雙引號移除掉,當然,若他本身沒有雙引號的話,~這一個就沒有效果~
平常在執行BAT檔後面也可以輸入參數~
例:
call_c.bat
@ECHO OFF
IF /I "%~1" EQU "ccd9527" (
ECHO HELLO CCD9527!!
) ELSE (
ECHO HELLO EVERYONE!!
)
PAUSE
執行的時候,請用以下兩個方式分別執行
%> call_c.bat ccd9527
與
%> call_c.bat
透過這一個方式,可以讓使用者決定要使用哪一個流程~非常之好用~
另外,要善用說明檔~
help印出目前系統可以使用的指令
CALL /?
通常裡面會有很多解釋和例子,值的參考!!
[總結]
在這裡,你應該學會了以下指令或關鍵字的用法
CALL
沒有留言:
張貼留言