call命令
在批處理中調用別的批處理或者可運行程序或者
バッチ プログラムを別のバッチ プログラムから呼び出します。
語法
1、CALL [驅動盤符:][路徑]文件名 [參數]
調用並執行[驅動盤符:][路徑]文件名對應的處理程序,並將參數傳遞給該處理(參數之間用空白字符隔開)
這樣就支持了bat程序的擴展
例如,我們可以調用bat,vbs,exe等處理來擴展bat程序的處理能力。
@echo off call F:\tmp\called.bat "hello world"
在路徑【F:\tmp\】下面建個【called.bat】文件
文件內添加以下代碼
@echo off echo %1
* %1是輸出傳遞該處理的第一個參數
運行結果為:
"hello world"
在例如,我們使用記事本來打開我們called.bat文件
notepad a.bat
執行上面這條語句,就會使用記事本來打開當前路徑下的a.bat文件。
2、CALL :標號 引數
將引數傳遞給標號指定的處理,並將執行標號指定的處理,然后返回調用處,繼續執行下面的處理。
@echo off call :called "test call" :called echo begin called echo %1 echo end called
運行結果(a.bat a.bat):
begin called
"test call"
end called
begin called
a.bat
end called
發現標簽內的部分被執行了兩邊。投一次是call調用的時候執行的("test call"),call執行后,bat順序執行以后,接下來是繼續執行下標號的內容(a.bat)
解決這個問題,我們需要在我們需要終止的時候,添加一個【exit /b】出來
程序修改以后:
@echo off call :called1 "test call1" call :called2 "test call2" exit /b :called1 SETLOCAL echo %1 exit /b ENDLOCAL :called2 SETLOCAL echo %1 exit /b ENDLOCAL
執行結果:
"test call1"
"test call2"
看到這個地方執行狀況,你不是覺得這個東西很像一個函數呢?
應該說這就是一個函數。以后我們想提取函數的時候就這么寫了。