| Zweck: | Ausführen einer Batch-Datei innerhalb einer anderen. |
| Format: | CALL file | :label [p1 [p2 ...]] |
| file | Die auszuführende Batch-Datei. |
| :label | Ein Label in der aktuellen Batchdatei. |
| p1, p2,... | Parameter für die Stapeldatei oder Unterroutine |
Verwendung:
Aufrufen anderer Batch-Dateien
Mit CALL können Batchdateien andere Batchdateien aufrufen (Batchdateischachtelung). Die aufrufende Batchdatei wird angehalten, während die aufgerufene (zweite) Batchdatei läuft. Wenn die zweite Batchdatei beendet ist (ohne den Befehl CANCEL auszuführen), wird die Ausführung der ursprünglichen Batchdatei mit dem nächsten Befehl fortgesetzt.
WARNUNG! Wenn Sie eine Batch-Datei innerhalb einer anderen Batch-Datei ausführen, ohne CALL zu verwenden, wird die ursprüngliche Batch-Datei beendet, bevor die andere gestartet wird. Diese Methode, eine Batchdatei von einer anderen aus aufzurufen, wird gewöhnlich als Verkettung bezeichnet. Wenn die Stapeldatei A.BTM CALL Bverwendet und B.BTM mit der Stapeldatei C.BTMverkettet ist , wird beim Verlassen von C.BTM (ohne Ausführung eines CANCEL-Befehls) die Verarbeitung der Stapeldatei A.BTM so fortgesetzt, als hätte sie CALL C verwendet .
Datei A.BTM:
...
call b
echo xxx
Datei B.BTM:
...
C
Datei C.BTM:
...
quit
Im obigen Beispiel wird nach der Ausführung des QUIT-Befehls in C.BTM als nächstes der Befehl ECHO xxx in A.BTM ausgeführt .
Das folgende Batchdateifragment vergleicht eine Eingabezeile mit wp und ruft bei Übereinstimmung eine andere Batchdatei auf:
input Enter your choice: %%option
if "%option" == "wp" call wp.bat
Batchdateien können bis zu 64 Ebenen tief verschachtelt werden.
Der aktuelle ECHO-Zustand wird an eine aufgerufene Batchdatei vererbt.
Die aufgerufene Batchdatei sollte immer entweder zurückkehren (indem sie ihre letzte Zeile ausführt oder den Befehl QUIT verwendet ) oder die Verarbeitung der Batchdatei mit CANCEL beenden . Starten Sie die ursprüngliche Batchdatei nicht neu oder rufen Sie sie nicht von der aufgerufenen Datei aus auf, da dies zu einer Endlosschleife oder einem Stapelüberlauf führen kann.
Um die Kompatibilität mit CMDzu gewährleisten , das den Befehl GOSUB für Unterprogramme in derselben Batch-Datei nicht unterstützt , können Sie ein Unterprogramm erstellen, das mit einem Label beginnt und durch eine der folgenden Optionen beendet wird:
•das Ende der Stapeldatei
•QUIT
•EXIT
Beachten Sie, dass die letzten beiden Befehle die Kontrolle NICHT an den CALL-Befehl zurückgeben. Verwenden Sie nicht den RETURN-Befehl!
Parameter, die an das Unterprogramm übergeben werden, sind wie in einer Batch-Dateials %1, %2, usw.zugänglich .
CALL gibt einen Exit-Code zurück, der mit dem Return-Code der Batch-Datei übereinstimmt. Sie können diesen Exit-Code mit bedingten Befehlen (&& und ||) testen.
Siehe auch GOSUB und benutzerdefinierte Funktionen.