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

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

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

Mitglied: 60730
60730 Sep 02, 2011 at 13:57:45 (UTC)
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ß
Member: Biber
Biber Sep 02, 2011 at 14:00:23 (UTC)
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
Member: poljew
poljew Sep 02, 2011 at 14:19:51 (UTC)
Goto Top
Hallo,

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

Danke
Member: rubberman
rubberman Sep 02, 2011 at 16:41:46 (UTC)
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
Member: poljew
poljew Sep 05, 2011 at 07:35:17 (UTC)
Goto Top
Danke,

es hat geklappt.

Ihr seid die besten!