poljew
Goto Top

Datum in einem bestimmten Format erstellen

Brauche wieder Hilfe!

Hallo Experten!
ich habe ein Problem.
Bei uns auf dem Server werden die Daten jede Nacht in bestimmte Ordner verschoben, der Ordnername sieht z.B so aus: 2011-8-12.
Ich habe eine Batch erstellt die nach diesen Ordner sucht.

Also ich stelle mein Datum so zusammen:

set jahr=%date:~-4%
set monat=%date:~-6,1%
set tag=%date:~-10,2%

echo %jahr%-%monat%-%tag%

Wenn 2001-1-11 geht, dann funktioniert alles, wenn wir aber 2011-9-2 haben, sucht meine batch nach 2011-9-02 und findet natürlich nichts.

Gibt es dafür eine Lösung?

Vielen Dank in vorraus,

Gruß

Content-ID: 172501

Url: https://administrator.de/forum/datum-in-einem-bestimmten-format-erstellen-172501.html

Ausgedruckt am: 21.04.2025 um 13:04 Uhr

60730
60730 02.09.2011 um 15:57:45 Uhr
Goto Top
Moin,

bau doch einfach in den Biber ein
if %date:~-11,1% gtr 0 set tag=%date:~-9,1%
dazwischen. - Wenns sein muß - das gleiche mit dem Monat

Und vergess den Pistaziengrünen Haken nicht.


gruß
Biber
Biber 02.09.2011 um 16:00:23 Uhr
Goto Top
Moin poljew,

willkommen im Forum.
Oder trenne es so:
[Demo am CMD-Prompt; eingeben nur die Testzeilen beginnend mit ">" ]
>for /f "delims=- tokens=1-3" %i in ("2011-12-17") do @Echo 2011-12-17 jahr:[%i] monat:[%j] tach: [%k]
2011-12-17 jahr:[2011] monat:[12] tach: [17]

(=15:58:10  D:\temp=)
>for /f "delims=- tokens=1-3" %i in ("2011-1-9") do @Echo 2011-1-9 jahr:[%i] monat:[%j] tach: [%k]
2011-1-9 jahr:[2011] monat:[1] tach: [9]

Grüße
Biber
poljew
poljew 02.09.2011 um 16:19:51 Uhr
Goto Top
Hallo,

verstehe ich nicht, wie "bau doch einfach in den Biber ein"?

Danke
rubberman
rubberman 02.09.2011 um 18:41:46 Uhr
Goto Top
Hallo poljew,

relativ allgemeingültig (wenn man Zugriff auf die Registry hat) sind diese beiden Varianten:
@echo off &setlocal

:: iDate (Reihenfolge 0=mdy, 1=dmy, 2=ymd) und sDate (Trennzeichen) aus der Registry lesen (für beide Varianten)
for /f "tokens=1,2*" %%a in ('reg query "HKCU\Control Panel\International"^|findstr /i "\<[is]Date\>"') do set "%%a=%%c"  
echo Reihenfolge: '%iDate%'    Trennzeichen: '%sDate%'  

:: Strings
for /f "tokens=1-3 delims=%sDate%" %%a in ("%date:* =%") do (  
  if %iDate%==0 (set mm=%%a&set dd=%%b&set yy=%%c)
  if %iDate%==1 (set dd=%%a&set mm=%%b&set yy=%%c)
  if %iDate%==2 (set yy=%%a&set mm=%%b&set dd=%%c)
)
echo %yy% %mm% %dd%

:: Zahlen
for /f "tokens=1-3 delims=%sDate%" %%a in ("%date:* =%") do (  
  if %iDate%==0 (set /a m=100%%a%%100,d=100%%b%%100,y=10000%%c%%10000)
  if %iDate%==1 (set /a d=100%%a%%100,m=100%%b%%100,y=10000%%c%%10000)
  if %iDate%==2 (set /a y=10000%%a%%10000,m=100%%b%%100,d=100%%c%%100)
)
echo %y% %m% %d%

pause

Grüße
rubberman
poljew
poljew 05.09.2011 um 09:35:17 Uhr
Goto Top
Danke,

es hat geklappt.

Ihr seid die besten!