Batch-Tricks: Variablen aus Unterprogrammen herausreichen

Unterprogramme in Batchdateien sind relativ einfach zu bewerkstelligen. Einfach ein Sprungmarke schreiben, ein goto :EOF und ein call :label. Nutzt das Unterprogramm jedoch ein setlocal-endlocal-Block, möchte man vielleicht Variablenänderungen des Unterprogramms in den darüberliegenden Gültigkeitsbereich weiterreichen, allerdings setlocal beibehalten, falls man exzessiv lokale Variablen nutzt.

Man kann hier ausnutzen, daß CMD Variablen beim Lesen der Zeile expandiert und nicht erst bei der Ausführung:
setlocal
rem Kram, viel
endlocal & set AEUSSERE_VARI­ABLE=%INNERE_VA­RIABLE%
Der Trick hier ist, daß die Variablenersetzung stattfindet, bevor endlocal ausgeführt wird. Das set danach hingegen wird nach endlocal ausgeführt und beeinflußt demzufolge schon wieder den äußeren Gültigkeitsbereich aber die Variable ist schon ersetzt worden und folglich können wir hierüber den Gültigkeitsbereich überschreiten.

Anmerkung: Ich habe diesen Trick bei Paul Sadowski schon gesehen und befand ihn des Merkens wert. Bislang habe ich es allerdings noch nicht allzu häufig benötigt. Meine geplante Bignum-Implementierung wird davon allerdings ausnehmend Gebrauch machen.

Kommentare

Neuen Kommentar abgeben

The content of this field is kept private and will not be shown publicly.