call
從一個批次程式呼叫另一個批次程式,而不停止父批次程式。 call 命令接受標籤做為呼叫的目標。
注意
當在指令碼或批次檔之外使用時,該呼叫在命令提示字元中沒有任何作用。
語法
call [drive:][path]<filename> [<batchparameters>]]
call [:<label> [<arguments>]]
參數
參數 | 描述 |
---|---|
[<drive>:][<path>]<filename> |
指定您想要呼叫之批次程式的位置和名稱。 <filename> 參數是必要的,而且必須具有 .bat 或 .cmd 副檔名。 |
<batchparameters> |
指定批次程式所需的任何命令列資訊。 |
:<label> |
指定您要批次程式控制項跳至的標籤。 |
<arguments> |
指定要從 :<label> 開始傳遞至批次程式之新執行個體的命令列資訊。 |
/? | 在命令提示字元顯示說明。 |
批次參數
批次指令碼引數參考 (%0、%1...) 列於下表中。
使用批次指令碼中的 %* 值指的是所有引數 (例如 %1、%2、%3...)。
您可以使用下列選擇性語法作為批次參數 (%n) 的替代:
批次參數 | 描述 |
---|---|
%~1 | 展開 %1 並移除周圍引號。 |
%~f1 | 將 %1 展開為完整路徑。 |
%~d1 | 僅將 %1 展開為磁碟機代號。 |
%~p1 | 僅將 %1 展開為路徑。 |
%~n1 | 僅將 %1 展開為檔名。 |
%~x1 | 僅將 %1 展開為副檔名。 |
%~s1 | 將 %1 展開為只包含簡短名稱的完整路徑。 |
%~a1 | 將 %1 展開為檔案屬性。 |
%~t1 | 將 %1 展開為檔案的日期和時間。 |
%~z1 | 將 %1 展開為檔案的大小。 |
%~$PATH:1 | 搜尋 PATH 環境變數中列出的目錄,並將 %1 展開為找到的第一個目錄的完整名稱。 如果未定義環境變數名稱,或搜尋找不到檔案,則此修飾詞會展開為空字串。 |
下表顯示如何將修飾詞與複合結果的批次參數結合:
含修飾詞的批次參數 | 描述 |
---|---|
%~dp1 | 僅將 %1 展開為磁碟機代號和路徑。 |
%~nx1 | 僅將 %1 展開為檔名和副檔名。 |
%~dp$PATH:1 | 搜尋 PATH 環境變數中所列的目錄是否有 %1,然後展開為找到之第一個目錄的磁碟機代號和路徑。 |
%~ftza1 | 展開 %1 以顯示類似 dir 命令的輸出。 |
在上述範例中,%1 和 PATH 可由其他有效值取代。 %~ 語法會以有效的引數編號終止。 %~ 修飾詞不能與 %* 搭配使用。
備註
使用批次參數:
批次參數可以包含您可以傳遞至批次程式的任何資訊,包括命令列選項、檔名、批次參數 %0 至 %9,以及變數 (例如 %baud%)。
使用
<label>
參數:藉由將 call 與
<label>
參數搭配使用,您可以建立新的批次檔內容,並將控制權傳遞至指定的標籤之後的陳述式。 第一次遇到批次檔結尾時 (也就是跳至標籤之後),控制項會在 call 陳述式之後傳回該陳述式。 第二次遇到批次檔結尾時,便會結束批次指令碼。使用直立線重新導向符號:
請勿將直立線
(|)
或重新導向符號 (<
或>
) 與 call 搭配使用。進行遞迴呼叫
您可以建立呼叫本身的批次程式。 不過,您必須提供結束條件。 否則,父代和子批次程式可能會產生無限迴圈。
使用命令延伸模組
如果啟用命令延伸模組,call 會接受
<label>
做為呼叫的目標。 正確的語法為call :<label> <arguments>
。
範例
若要從一個批次程式執行另一個批次程式,請在父批次程式中輸入下列命令:
call checknew
如果父批次程式接受兩個批次參數,而且您想要將這些參數傳遞至 checknew.bat,請在父批次程式中輸入下列命令:
call checknew %1 %2