@echo off for /F "Delims=. tokens=1,2,3,*" %%i IN ('echo %DATE%') do call :setzen %%i %%j %%k if %dd% GTR %dow% ( set /A dd-=%dow% & goto fertig ) if %mm% GTR 1 ( call :Monatminus ) else ( set mm=12 set /A yy-=1 set /A dd=%dd% + 31 - %dow% ) :fertig if %dd% LSS 10 set dd=0%dd% if %mm% LSS 10 set mm=0%mm% if #%1# equ ## ( echo Der letzte Sonntag war am %dd%.%mm%.%yy% & pause ) else ( set %1=%dd%.%mm%.%yy%) goto :EOF :####################################################################################### :Monatminus set /A mm-=1 for %%i in (1:31 2:28 3:31 4:30 5:31 6:30 7:31 8:31 9:30 10:31 11:30 12:31) do ( for /f "delims=: tokens=1,2" %%o in ("%%i") do ( if %%o EQU %mm% ( if %mm% EQU 2 ( set /A dd=%dd%+%%p+%sj%-%dow% ) else ( set /A dd=%dd%+%%p-%dow%)))) goto :EOF :####################################################################################### :####################################################################################### :setzen set dd=%1 & set mm=%2 & set yy=%3 set /a dd=100%dd%%%100,mm=100%mm%%%100 set /a z=14-mm,z/=12,y=yy+4800-z,m=mm+12*z-3,dow=153*m+2 set /a dow=dow/5+dd+y*365+y/4-y/100+y/400-2472630,dow%%=7,dow+=1 set /a a=%yy%%%4 & set /a b=%yy%%%100 & set /a c=%yy%%%400 & set sj=0 if %a% EQU 0 ( if %b% NEQ 0 ( set sj=1 ) else ( if %c% EQU 0 ( set sj=1 ))) set a= set b= set c= goto :EOF :#######################################################################################