Ein freundliches Hallo an alle Forums-Mitglieder,
ich habe folgenden Effekt in einem Batchskript unter Windows XP / 2003:
Habe eine Abfrage für den heutigen und den gestrigen Tag eingebaut. Den heutigen Tag erhalte ich mit
set tag=%date:~-10,2%
den Vortag mit
set /A gestern=tag-1
Heute (09.07.) erhalte ich allerdings für die Variable "gestern" nicht, wie man erwarten würde, den Wert 8, sondern den Wert -1!
Habe dann das Problem näher untersucht und ein Skript geschrieben, welches die Zahlen von 1-15 hoch zählt und dann von der Zahl jeweils 1 abzieht. Das Skript sieht in etwa so aus:
set Tag=01
set /A Gestern=Tag-1
echo %Gestern%
set Tag=02
set /A Gestern=Tag-1
echo %Gestern%
set Tag=03
set /A Gestern=Tag-1
echo %Gestern%
...
set Tag=11
set /A Gestern=Tag-1
echo %Gestern%
set Tag=12
set /A Gestern=Tag-1
echo %Gestern%
Nun würde man erwarten, dass in der Ausgabe die Zahlen 0-11 erscheinen. Die Ausgabe sieht aber so aus:
0
1
2
3
4
5
6
-1
-1
9
10
11
Der Set-Befehl rechnet falsch, sobald man von 08 und 09 den Wert 1 abzieht. Dieser Effekt tritt nicht auf, wenn ich die 0 vor den Zahlen 1-9 weglasse. Da ich aber die Werte über die o.g. Datumsfunktion erhalte, enthält die Variable die voranstehende Null.
Nun meine beiden Fragen:
- Kann mit jemand einen Tipp geben, wie ich in einem Windows Skript die Zahlen von 1-9 mit der o.g. Methode ohne voranstehende 0 bekomme?
- Was mich ehrlich gesagt viel mehr interessiert: Kann mir jemand den o.g. Effekt erklären, warum nur bei "08" und "09" falsch gerechnet wird?
Schon mal vielen Dank für Eure Zeit und die vielen Antworten ;)
Einen schönen Tag noch :D :D