Wir unterscheiden, wir einen Wert an einen Sub (Subroutine innerhalb der Batchdatei oder an eine andere Batchdatei übergeben wollen.
Wertübergabe an eine Sub
Bsp. WertuebergabeSub.zip
@echo off
set Zahl=4
Call :Rechnen
echo %Zahl%
pause
goto :Ende
:Rechnen
set /a Zahl=%Zahl%*2
:EOF %Zahl%
:Ende
Zahl = 4
Mit dem Befehl Call kehrt der Batch bei erreichen von :EOF im Gegensatz zu Goto zurück.
Befindet sich der Call nicht in einer Verschachtelung (z.B. Forschleife) genügt Call :[Sprungmarke]
an sonsten Call :[Sprungmarke] %[Variable]%
Wir rechenen Zahl*2
und kehren zurück. %[Zahl] könnte man hier auch weglassen.
Ergebnis: 8
Wertübergabe an eine Bat
Bsp. WertübergabeBat.zip
Datei 1: WertuebergabeVon.Bat
@echo off
set Zahl=4
Call WertuebergabeNach.Bat %Zahl%
echo %Zahl%
pause
Datei 2: WertuebergabeNach.Bat
@echo off
echo Zahl: %Zahl%
set /a Zahl=%Zahl%*2
Pause
:EOF %Zahl%
(diese bat ausführen!)
Zahl = 4
Beim Aufruf der Datei 2 ist die Angabe des Dateipfades und die Angabe der Variablen notwendig. Z.b.:
Call [DateiPFAD] %Var1% %Var2% ... %VarN%
Datei 2 wird nach Aufruf aufgeführt...
...zeigt zunächt den übergebenen Wert an (=4)...
...führt eine rechenoperation aus
und gibt den Wert zurück an die Datei 1.