Hochzählen einer Variable funktioniert ab 08 nicht mehr
Hi zusammen!
Ich habe etwas wirklich merkwürdiges:
Man erstelle eine Datei c:\tag.txt mit dem Inhalt 01.
Mal führe folgendes Script 7x aus, aber beim 8. Mal macht er aus der 08 keine 09 sondern eine 01. Ich versetehe es nicht...
Weiß jemand Rat?
Ich habe etwas wirklich merkwürdiges:
Man erstelle eine Datei c:\tag.txt mit dem Inhalt 01.
Mal führe folgendes Script 7x aus, aber beim 8. Mal macht er aus der 08 keine 09 sondern eine 01. Ich versetehe es nicht...
set /p tag=<"C:\tag.txt"
echo eingelesener tag ist %tag%
set /a tag+=1
echo tag plus eins ist %tag%
for /L %%i IN (1 1 9) do (
if "%tag%"=="%%i" set tag=0%%i
if "%tag%"=="0%%i" goto :tagend
)
:tagend
echo %tag%> C:\tag.txt
echo %tag% in datei geschrieben
pause
Weiß jemand Rat?
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 95461
Url: https://administrator.de/forum/hochzaehlen-einer-variable-funktioniert-ab-08-nicht-mehr-95461.html
Ausgedruckt am: 23.12.2024 um 05:12 Uhr
2 Kommentare
Neuester Kommentar
Hallo bufferm44!
Das ist eine der lästigen Kleinigkeiten, mit denen die CMD-Shell so aufwarten kann ...
Eine Zahl, die mit "0" beginnt, wird als Oktalzahl interpretiert - von "00" bis "07" macht das natürlich keinen Unterschied, aber mangels Ziffer "8" im Oktalsystem stellt natürlich "08" keine gültige Zahl mehr dar.
Da der "set /a" Befehl aber auf Teufel komm raus eine Zahl erzeugen will, nimmt er soviel, wie noch "in Ordnung" ist - also nur die führende "0" - und addiert dann 1.
Ein Workaround (als Ersatz der Zeile 3) könnte so aussehen:
Damit hast Du dann das Formatierungsproblem auch gleich gelöst ...
Grüße
bastla
Das ist eine der lästigen Kleinigkeiten, mit denen die CMD-Shell so aufwarten kann ...
Eine Zahl, die mit "0" beginnt, wird als Oktalzahl interpretiert - von "00" bis "07" macht das natürlich keinen Unterschied, aber mangels Ziffer "8" im Oktalsystem stellt natürlich "08" keine gültige Zahl mehr dar.
Da der "set /a" Befehl aber auf Teufel komm raus eine Zahl erzeugen will, nimmt er soviel, wie noch "in Ordnung" ist - also nur die führende "0" - und addiert dann 1.
Ein Workaround (als Ersatz der Zeile 3) könnte so aussehen:
set "tag=1%tag%"
set /a tag+=1
set "tag=%tag:~-2%"
Grüße
bastla