joe65
Goto Top

Datum in Tag, Monat und Jahr zerlegen

Hallo,

ich möchte ein Datum vom Format tt.mm.yyyy z.B. 17.06.2013 in Tag=17, Monat=6 und Jahr=2013 als Zahlen bekommen.

Auszug aus Code:
rem Datum: 17.06.2013
for /f "tokens=1,2,3 delims=." %%i in ("%Datum%") do (
set /a day=%%i
set /a month=%%j
set /a year=%%k
)
echo day=%day%
echo month=%month%
echo year=%year%
pause

Ich bekomme aber nur für den Tag (day) ein Ergebnis, nämlich 17, nicht aber für Monat (month) und Jahr (year).
Im cmd-Window wird dann die Meldung ausgegeben:
Ungültige Zahl. Numerische Konstanten sind entweder dezimale (17),
hexadezimale (0x11) oder oktale (021) Zahlen.

Ich versteht das nicht, warum diese Meldung kommt.

Content-ID: 213877

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

Ausgedruckt am: 25.11.2024 um 17:11 Uhr

Endoro
Endoro 09.08.2013 um 20:10:58 Uhr
Goto Top
Hallo,
das ist wegen der Oktalzahlenproblematik, "08" und "09" sind keine gültigen Oktalzahlen.
@echo off &SETLOCAL
SET "Datum=09.08.2013"  
for /f "tokens=1-3 delims=." %%i in ("%Datum%") do (  
	set /a day=1%%i%%10
	set /a month=1%%j%%10
	set /a year=%%k
)
echo day=%day%
echo month=%month%
echo year=%year%
lg.
bastla
bastla 09.08.2013 um 20:28:11 Uhr
Goto Top
@ Endoro
Wenn bei Dir noch überschüssige Nullen herumliegen, würde ich je eine den Zeilen 4 und 5 spendieren ...

Grüße
bastla
bastla
bastla 09.08.2013 aktualisiert um 20:35:59 Uhr
Goto Top
Hallo joe65!

Immer noch Probleme damit, Code passend zu formatieren? Kann ich irgendwie dabei helfen?

Grüße
bastla
Endoro
Endoro 09.08.2013 um 20:40:25 Uhr
Goto Top
@bastla
109 % 100 = 9
109 % 10 = 9
face-smile lg.
bastla
bastla 09.08.2013 aktualisiert um 20:45:49 Uhr
Goto Top
@ Endoro
110 % 100 = 10
110 % 10 = ?
Wenn Du schon Zeichen sparen willst, dann:
set /a day=1%%i-100
Grüße
bastla
Endoro
Endoro 09.08.2013 um 20:46:58 Uhr
Goto Top
Oi, meine Monate haben nur 9 Tage, dann gibt's eher Geld face-smile
@echo off &SETLOCAL
SET "Datum=09.08.2013"  
for /f "tokens=1-3 delims=." %%i in ("%Datum%") do (  
	set /a day=1%%i-100
	set /a month=1%%j-100
	set /a year=%%k
)
echo day=%day%
echo month=%month%
echo year=%year%
lg.
colinardo
colinardo 10.08.2013 um 10:24:24 Uhr
Goto Top
Hallo joe65,
oder du machst es direkt so:
set day=%date:~0,2%
set month=%date:~3,2%
set year=%date:~6,4%
Grüße Uwe
bastla
bastla 10.08.2013 aktualisiert um 10:44:54 Uhr
Goto Top
@ colinardo
Aber nicht, wenn doch das Ergebnis numerisch sein soll - daher nach dem gleichen Schema wie oben:
set /a day=1%date:~0,2%-100
set /a month=1%date:~3,2%-100
set /a year=%date:~6,4%
Grüße
bastla
joe65
joe65 10.08.2013 um 12:46:57 Uhr
Goto Top
Hallo bastla,

ich bin in diesem Bereich (batch scripte) ein Anfänger. Was ist mit formatieren genau gemeint?
Sind die Einrückungen nicht in Ordnung oder ist sonst noch was zu beachten?
Kannst du mir evtl. meinen Code so anpassen, dass er richtig formatiert wäre, dann wird es mir vielleicht klarer.

Gruß
colinardo
colinardo 10.08.2013 um 12:52:10 Uhr
Goto Top
Zitat von @joe65:
ich bin in diesem Bereich (batch scripte) ein Anfänger. Was ist mit formatieren genau gemeint?
Mit formatieren meinen wir das du Tags verwendest um deinen Code zu posten, damit keine Sonderzeichen verloren gehen.

Sind die Einrückungen nicht in Ordnung oder ist sonst noch was zu beachten?
Kannst du mir evtl. meinen Code so anpassen, dass er richtig formatiert wäre, dann wird es mir vielleicht klarer.
@bastla und @Endoro ging es vorrangig darum ob du später mit dem Datum bzw. den Variablen rechnen musst, weil du erwähnt hast das es "Zahlen" sein sollen.
Wenn das nicht der Fall ist und du die Variablen so wie sie sind verwenden möchtest, reicht das hier völlig aus:
set day=%date:~0,2%
set month=%date:~3,2%
set year=%date:~6,4%

Grüße Uwe
bastla
bastla 10.08.2013 aktualisiert um 12:57:44 Uhr
Goto Top
Hallo joe65!
Kannst du mir evtl. meinen Code so anpassen, dass er richtig formatiert wäre
Du brauchst doch nur vor den Code "<code>" und danach "</code>" zu schreiben (wie eigentlich den schon mehrfach verlinkten Formatierungs-FAQ zu entnehmen wäre) - das kannst (und sollst) Du auch nachträglich noch tun ...

Grüße
bastla