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

Verheiratet, Vater von zwei Kindern, eines an der Hand, eines im Herzen. Schon immer Technik-Freund, 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.
0 Kommentare
1 Pingback