If not %Variable% - CMD?

PeterKremsner  29.03.2022, 09:51

Was meinst du mit nicht echo? Echo ist ein Befehl und keine Eigenschaft einer Variable.

Du kannst nur das Command echo mit @echo off abschalten.

Modellbahni 
Fragesteller
 31.03.2022, 08:53

Wenn die Variable ist nicht 50 dann echo Falsch

2 Antworten

Vom Fragesteller als hilfreich ausgezeichnet
set /A var=50
if NOT %var%==50(
  echo Falsch
)

Speichere Batchdateien unter Windows nicht als .bat ! ...sondern als .cmd

(die Gründe hier darzulegen würde den Rahmen sprengen ---Buggy Errormanangemet Emulation in .bat)

demo.cmd

if not defined MeineVariable echo die gibt es nicht!
if "%MeineVariable%"=="" echo die gibt es nicht!
if "%MeineVariable%" equ "" echo die gibt es nicht!

 rem Umkehrung prüfen ob eine Variable irgendeinen Wert enhällt
set "MeineVariable=irgendwas"
if defined MeineVariable echo die gibt es juhu...
if "%MeineVariabl%e" neq "" echo die gibt es juhu...
pause

allerdings geht die Prüfung in die Hose, wenn sich Leerzeichen in die Variable mogeln:

 rem siehst Du das Leerzeichen hinter dem "=" ?
set MeineVariable=   
if not defined MeineVariable echo die gibt es juhu...
if "%MeineVariable%"=="" echo die gibt es juhu...
if "%MeineVariable%" equ "" echo die gibt es juhu...
 rem aber das geht trotzdem schief
echo %MeineVariable%
 rem aber das geht (macht nur eine Leerzeile)
echo:%MeineVariable%
echo:%VariableDieNichtExistiert%
pause

man kann natürlich auf das Vorhandensein von Leerzeichen Testen.

  rem variable  mit beliebiger anzahl Spaces
set "MeineVariable=     "
set "Test=%MeineVariable: =%"  &rem entferne alle Leerzeichen und versuch %test%  zu erzeugen
if defined MeineVariable echo die gibts
if "%Test%"==""  echo MeineVariable existiert nicht oder enthielt nur Leerzeichen
if "%MeineVariable%" neq "%Test%" echo MeineVariable enthielt leerzeichen (aber vielleicht auch andere Buchstaben)
if "%Test%"=="" if "%MeineVariable%" neq "%Test%" echo MeineVariable enthielt nur Leerzechen
pause

Wenn ich dir einen guten Rat geben kann, vergiss Batch !

Lerne lieber Powershell, das ist die Zukunft der ConsolScripts unter Windows.

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren