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

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

Printed on: April 19, 2024 at 18:04 o'clock

Member: Endoro
Endoro Aug 09, 2013 at 18:10:58 (UTC)
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.
Member: bastla
bastla Aug 09, 2013 at 18:28:11 (UTC)
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
Member: bastla
bastla Aug 09, 2013 updated at 18:35:59 (UTC)
Goto Top
Hallo joe65!

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

Grüße
bastla
Member: Endoro
Endoro Aug 09, 2013 at 18:40:25 (UTC)
Goto Top
@bastla
109 % 100 = 9
109 % 10 = 9
face-smile lg.
Member: bastla
bastla Aug 09, 2013 updated at 18:45:49 (UTC)
Goto Top
@ Endoro
110 % 100 = 10
110 % 10 = ?
Wenn Du schon Zeichen sparen willst, dann:
set /a day=1%%i-100
Grüße
bastla
Member: Endoro
Endoro Aug 09, 2013 at 18:46:58 (UTC)
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.
Member: colinardo
colinardo Aug 10, 2013 at 08:24:24 (UTC)
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
Member: bastla
bastla Aug 10, 2013 updated at 08:44:54 (UTC)
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
Member: joe65
joe65 Aug 10, 2013 at 10:46:57 (UTC)
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ß
Member: colinardo
colinardo Aug 10, 2013 at 10:52:10 (UTC)
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
Member: bastla
bastla Aug 10, 2013 updated at 10:57:44 (UTC)
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