Batchdatei: SET-Befehl funktioniert in IF ELSE nicht
Guten Tag
In einer CMD-Batchdatei musste ich den Quellcode ändern, weil ich keine Variable im ELSE-Teil definieren konnte.
Einen Fehler im Code sehe ich nicht. Das Problem habe ich auf anderem Weg bereits gelöst.
Dennoch möchte ich wissen, ob jemand eine Erklärung für dieses Phänomen hat. Danke für Eure Antwort.
Vereinfacht geht es um:
@echo off
cls
set var=4
if %var% GEQ 5 (
echo vari ist groesser gleich 5
) else (
set antwort=vari ist kleiner als 5
echo %antwort%
)
pause
Ausgabe ist "ECHO ist ausgeschaltet (OFF)."
In einer CMD-Batchdatei musste ich den Quellcode ändern, weil ich keine Variable im ELSE-Teil definieren konnte.
Einen Fehler im Code sehe ich nicht. Das Problem habe ich auf anderem Weg bereits gelöst.
Dennoch möchte ich wissen, ob jemand eine Erklärung für dieses Phänomen hat. Danke für Eure Antwort.
Vereinfacht geht es um:
@echo off
cls
set var=4
if %var% GEQ 5 (
echo vari ist groesser gleich 5
) else (
set antwort=vari ist kleiner als 5
echo %antwort%
)
pause
Ausgabe ist "ECHO ist ausgeschaltet (OFF)."
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 370816
Url: https://administrator.de/forum/batchdatei-set-befehl-funktioniert-in-if-else-nicht-370816.html
Ausgedruckt am: 13.05.2025 um 12:05 Uhr
9 Kommentare
Neuester Kommentar

Hi.
Das ist kein Phänomen das ist Fakt weil das in den Klammern für die Batch quasi in einer Zeile verarbeitet wird
.
Stichwort ist Delayed Expansion, dann klappts auch in den Klammern mit den Variablen wenn du die mit Ausrufezeichen statt Prozentzeichen einklammerst.
Gruß m.
Das ist kein Phänomen das ist Fakt weil das in den Klammern für die Batch quasi in einer Zeile verarbeitet wird
Stichwort ist Delayed Expansion, dann klappts auch in den Klammern mit den Variablen wenn du die mit Ausrufezeichen statt Prozentzeichen einklammerst.
@echo off &setlocal ENABLEDELAYEDEXPANSION
cls
set "var=4"
if %var% GEQ 5 (
echo var ist groesser gleich 5
) else (
set "antwort=var ist kleiner als 5"
echo !antwort!
)
pause
Hallo,
Schon mal ein Delayedexpansion genommen?
http://www.robvanderwoude.com/variableexpansionexercise2.php
Gruß,
Peter
Zitat von @Alicudi2000:
In einer CMD-Batchdatei musste ich den Quellcode ändern, weil ich keine Variable im ELSE-Teil definieren konnte.
?!?In einer CMD-Batchdatei musste ich den Quellcode ändern, weil ich keine Variable im ELSE-Teil definieren konnte.
@echo off
Mach das mal weg.if %var% GEQ 5 (
Wirklich nur 1 % Zeichen und keine doppelten?Schon mal ein Delayedexpansion genommen?
http://www.robvanderwoude.com/variableexpansionexercise2.php
Gruß,
Peter

Zitat von @Alicudi2000:
Danke für Deine rasche Antwort Marathon
Ich nehme an, dass die Batch bei Dir läuft.
Bei mir (Win 7 PRO) will auch Dein Code nicht klappen?
Funktioniert einwandfrei Win7/WIn10 ist egal das ist schon ewig gleich, du musst etwas nicht richtig angepasst haben oder du hast die Ausrufezeichen nicht beachtet.Danke für Deine rasche Antwort Marathon
Ich nehme an, dass die Batch bei Dir läuft.
Bei mir (Win 7 PRO) will auch Dein Code nicht klappen?
Oder wir reden aneinander vorbei??
So wie es sein sollte:

Hallo,
Dann hast du falsch abgeschrieben. du kannst aber mal nehmen.
Getested mit Win 7 Pro.
Gruß,
Peter
Dann hast du falsch abgeschrieben. du kannst aber mal
set "antwort=var (%var%) ist kleiner als 5"
Getested mit Win 7 Pro.
Gruß,
Peter

meinem Kunden laufen lasse
Mit dem gefährlichen Halbwissen hantierst du mit Skripten bei Kunden?? Koppschüttel, armer Kunde ...