Windows: Variablen innerhalb von If-Anweisungen
Batch-Skripte unter Windows (und zuvor DOS) sind eine feine Sache für einfache Automatisierung. Verschachtelt man allerdings If-Anweisungen und möchte man innerhalb dieser auch noch Variablen verwenden, so führt das mitunter in eine böse Falle.
Folgendes Beispiel funktioniert nicht:
@echo off set Var1=1 if %Var1%==1 ( set Test=True echo %Test% )
Man würde erwarten das als Ausgabe „True“ erscheint, stattdessen kommt ein „ECHO ist ausgeschaltet (OFF)“. Hintergrund ist, das Variablen innerhalb von If-Anweisungen anders behandelt werden. Lösbar ist das Ganze wie folgt:
@echo off setlocal enabledelayedexpansion set Var1=1 if %Var1%==1 ( set Test=True echo !Test! )
Relevant ist neben dem einleitenden „setlocal enabledelayedexpansion“ das innerhalb der If-Anweisung statt Prozent- Ausrufezeichen verwendet werden.
Eine Variable die innerhalb einer If-Anweisung definiert wurde, kann außerhalb der Anweisung wie gewohnt mit den Prozentzeichen verwendet werden:
@echo off setlocal enabledelayedexpansion set Var1=1 if %Var1%==1 ( set Test=True ) echo %Test%
Quelle:
stackoverflow – ERRORLEVEL inside IF
Schon immer Technik-Enthusiast, seit 2001 in der IT tätig und seit über 10 Jahren begeisterter Blogger. Mit meiner Firma IT-Service Weber kümmern wir uns um alle IT-Belange von gewerblichen Kunden und unterstützen zusätzlich sowohl Partner als auch Kollegen. Die Schwerpunkte liegen auf der Netzwerkinfrastruktur, den Betrieb von Servern und Diensten.
Pingback: Windows: Variablen innerhalb von For-Anweisungen | Andys Blog – Linux & Windows