Ruft eine Batchdatei von einer anderen aus auf. CALL [Laufwerk:][Pfad]Dateiname [Parameter] Parameter Bezeichnet beliebige Angaben in der Befehlszeile, die von dem aufgerufenen Batchprogramm benötigt werden. Wenn die Befehlserweiterungen aktiviert sind, wird der CALL-Befehl folgendermaßen verändert: Der CALL-Befehl akzeptiert jetzt Marken als Sprungziele. Die Syntax ist: CALL :Marke Argumente Mit den angegebenen Argumenten wird ein neuer Batchkontext erstellt und die Programmausführung hinter der angegebenen Marke fortgesetzt. Um die Batch- datei dort tatsächlich zu verlassen, muss man sie zweimal beenden. Beim ersten Erreichen des Endes wird das Programm zu dem Befehl hinter dem CALL-Aufruf zurückkehren. Beim zweiten Mal wird dann die Batchdatei beendet. Geben Sie GOTO /? ein, um weitere Informationen über die Erweiterung von GOTO :EOF zu erhalten, die es Ihnen ermöglicht, eine Batchdatei zu verlassen. Zusätzlich hat sich die Auflösung von Referenzen auf Argumente in Batchdateien (%0, %1 etc.) wie folgt geändert: %* in einer Batchdatei bezieht sich auf alle Argumente (z. B. %1 %2 %3 %4 %5 ...). Die Ersetzung von Batchparametern (%n) wurde erweitert. Sie können jetzt folgende Syntax verwenden: %~1 - Expandiert %1 und entfernt umschließende Anführungszeichen ("). %~f1 - Expandiert %1 zu einem vollständigen Dateinamen. %~d1 - erstellt nur den Laufwerkbuchstaben von %1. %~p1 - erstellt nur den Pfad von %1. %~n1 - erstellt nur den Dateinamen von %1. %~x1 - erstellt nur die Dateierweiterung von %1. %~s1 - Der erstellte Pfad enthält nur kurze Namen. %~a1 - Expandiert %1 zu Dateiattributen. %~t1 - Expandiert %1 zu Datum/Zeit der Datei. %~z1 - Expandiert %1 zur Größe der Datei. %~$PATH:1 - Durchsucht die in der PATH-Umgebungsvariablen angegebenen Verzeichnisse und expandiert die erste gefundene Datei %1 zu dem vollständigen Dateinamen. Wenn der Name der Umgebungsvariablen nicht definiert ist oder diese Datei bei der Suche nicht gefunden wurde, wird dieser Parameter zu einer leeren Zeichenfolge expandiert. Diese Parameter können auch miteinander kombiniert werden: %~dp1 - erstellt den Laufwerkbuchstaben und Pfad von %1. %~nx1 - erstellt den Dateinamen und die Dateierweiterung von %1. %~dp$PATH:1 - Durchsucht die in der PATH-Umgebungsvariablen ange- gebenen Verzeichnisse nach %1 und erstellt den Lauf- werkbuchstaben und Pfad der ersten gefundenen Datei. %~ftza1 - erstellt eine DIR-ähnliche Ausgabezeile von %1. In den angegebenen Beispielen können %1 und PATH durch andere gültige Werte ersetzt werden. Die Syntax von %~ wird durch eine gültige Argument- anzahl beendet. %~ darf nicht mit %* verwendet werden.
Aufruf externe Programmroutine
@echo off rem programm_eins.bat setlocal set para1= set para2= call unterprogramm_eins.bat Max Mustermann echo %para1% echo %para2%
@echo off rem unterprogramm_eins.bat echo Es wurden die Parameter "%1" und "%2" übergeben. set para1=Vorname: %1 set para2=Nachname: %2
Ausgabe:
Es wurden die Parameter "Max" und "Mustermann" übergeben. Vorname: Max Nachname: Mustermann
Programm_Eins.bat ruft mit "Call" das Unterprogramm Unterprogramm_Eins.bat auf und übergibt zwei Parameter. Unterprogramm_eins.bat verarbeitet die beiden Parameterwerte und setzt den Wert der beiden Variablen. Das Unterprogramm endet und kehrt zum nächsten Befehl nach dem Call-Aufruf zurück.
Aufruf interne Programmroutine
Ausgabe:
Summe: 8 Hier ist das Programm zu Ende
Der Call-Aufruf unterscheidet durch die Angabe eines Doppelpunktes ob
ein externes Programm ausgeführt oder eine interne Marke angesprungen werden soll.
Beim internen Call-Befehl wird der anzuspringenden Marke ein Doppelpunkt vorangesetzt (Zeile 4).
Das aufgerufene Unterprogramm (Zeile 10) verhält sich genau so wie in einem eigen Batch-Programm.
Das Unterprogramm muss durch einen Sprung zum Dateiende (Zeile 12) verlassen werden wodurch es zum aufrufenden
Befehl zurück kehrt und das Hauptprogramm fortgesetzt wird.
Damit die Unterprogramme zum Ende des Hauptprogramms nicht erneut aufgerufen werden muss durch ein goto :EOF (Zeile 8) das Programm beendet werden.
© by Alois Reifenschneider