개인활동/잡동사니팁들

windows batch에서 전일 날짜 가져오기, 윤달 적용 추가

무늬만엄마 2024. 4. 18. 19:04

@echo off
setlocal 

for /f "tokens=1-3 delims=- " %%A in ('echo %date%') do (set YYYY=%%A&SET MM=%%B&SET DD=%%C)
::set YYYY=2004
::set mm=03
::set dd=01

set /a dd = dd - 1
set /a mm = mm + 0
set /a yy = yyyy %% 4
set /a yyL = yyyy %% 100

if %dd%==0 set /a mm = mm - 1
if %mm%==0 set /a yyyy = yyyy - 1
if %mm%==0 set /a mm = 12

if %dd%==0 (
goto getdays
) else (
goto end
)

:getdays
if %mm%==1 set /a dd = 31
if %mm%==2 (
if %yy% equ 0 (
if %yyL% equ 0 set /a dd = 28
if %yyL% neq 0 set /a dd = 29
)
if %yy% neq 0 (set /a dd = 28)
)
if %mm%==3 set /a dd = 31
if %mm%==4 set /a dd = 30
if %mm%==5 set /a dd = 31
if %mm%==6 set /a dd = 30
if %mm%==7 set /a dd = 31
if %mm%==8 set /a dd = 31
if %mm%==9 set /a dd = 30
if %mm%==10 set /a dd = 31
if %mm%==11 set /a dd = 30
if %mm%==12 set /a dd = 31

:end

if %mm% LEQ 9 set mm=0%mm%
if %dd% LEQ 9 set dd=0%dd%
 
echo %yyyy%%mm%%dd%

endlocal