reifenschneider.de.Info und Beispiele zum Befehl Call

Info und Beispiele zum Befehl Call

 

Information zum Befehl Call

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.

Beispiel 1

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.

Beispiel 2

Aufruf interne Programmroutine

  1. @echo off
  2. setlocal
  3. set summe=
  4. call :addiere 3 5
  5. echo Summe: %summe%
  6. echo Hier ist das Programm zu Ende
  7. goto :EOF
  8. :addiere
  9. set /a summe= %1 + %2
  10. goto :EOF
  11. :sonstige_subroutine
  12. machwas.exe
  13. goto :EOF

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.

TOP

© by Alois Reifenschneider