evinben
Goto Top

FOR-Schleife ignoriert Variable nach Wertänderung

Hallo,

die FOR-Schleife akzeptiert nur 1x eine Variable. In der zweiten Runde will die FOR-Schleife von der gleichen Variable, jedoch mit geändertem Wert, nichts mehr wissen.


@echo off
set /p "InputNumber=Zahl eingeben: "  
set Numb=1

:M5
for /f "tokens=%Numb%" %%d in ('echo %InputNumber%') do (  
	echo Echo in FOR-Schleife: %Numb%
	if %Numb%==2 goto :M10
	)
if %Numb% NEQ 2 (set Numb=2&goto :M5)

echo Schlecht &timeout /t 3 >nul &goto :eof

M:10
echo ERFOLG! &timeout /t 3 >nul

Soll es nun ein Bug sein?

Gruß
evinben

Content-ID: 196882

Url: https://administrator.de/contentid/196882

Ausgedruckt am: 24.11.2024 um 12:11 Uhr

pieh-ejdsch
pieh-ejdsch 12.01.2013 um 21:05:54 Uhr
Goto Top
moin evinben,

entweder die Variable mit Anführungszeichen umschliessen oder set /A oder beim Vergleich EQU benutzen.

Was möchtest Du denn genau mit der Forschleife abfragen?

Gruß Phil
bastla
bastla 12.01.2013 aktualisiert um 21:36:03 Uhr
Goto Top
... und das Springen aus der Schleife sein lassen (wozu die Schleife dienen soll, würde mich auch interessieren) ...

Wenn übrigens die Variable %InputNumber% kein Leerzeichen (als Default-Delimiter) enthält, wird der "do"-Teil der Schleife beim zweiten Durchlauf nicht ausgeführt, da es dann ja kein Token 2 gibt.

Grüße
bastla
evinben
evinben 12.01.2013 um 21:37:42 Uhr
Goto Top
Hallo Phil,

entweder die Variable mit Anführungszeichen umschliessen oder set /A oder beim Vergleich EQU benutzen.
das habe ich alles vorher ausprobiert. EQU darf ich nicht benutzen.

face-sad

Was möchtest Du denn genau mit der Forschleife abfragen?
ich füge den Code gleich ein...

Gruß
evinben
evinben
evinben 12.01.2013 um 22:36:35 Uhr
Goto Top
Hallo bastla,

Wenn übrigens die Variable %InputNumber% kein Leerzeichen (als Default-Delimiter) enthält, wird der "do"-Teil der Schleife beim zweiten Durchlauf nicht ausgeführt, da es dann ja kein Token 2 gibt.

Da hast du völlig Recht. Ich habe eine temporäre Batch zum Experimentieren erstellt und dort habe ich den Delimeter (die Option delims) weggelassen und vergessen zurückzustellen. In dem eigentlichen Code habe ich es dring gehabt, jedoch musste ich einen anderen Fehler debugen.... und so kam es zu Stande.
Danke, gut aufgepasst!

Der Code ist nun fertig und diesen veröffentliche ich hier, um Redundanz zu vermeiden:

Mit IF-Befehl Dezimalzahlen richtig vergleichen.


Eine gute Nacht!


Gruß
evinben