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-Key: 196882

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

Printed on: April 24, 2024 at 06:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Jan 12, 2013 at 20:05:54 (UTC)
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
Member: bastla
bastla Jan 12, 2013 updated at 20:36:03 (UTC)
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
Member: evinben
evinben Jan 12, 2013 at 20:37:42 (UTC)
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
Member: evinben
evinben Jan 12, 2013 at 21:36:35 (UTC)
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