【方案一】BAT + date.exe(GNU)
@echo off rem 调用GNU for Win32的date.exe set "gnuDate=C:/test/date.exe" rem 指定月数 set MonthsAgo=1 for /f %%a in ('%gnuDate% -d "%MonthsAgo% months ago" "+%%Y-%%m-01"') do ( set "DstDate=%%a" ) ) echo,%DstDate% pause
【方案二】BAT + VBS
@echo off rem 指定月数 set MonthsAgo=2 >"%temp%/DateCalculate.vbs" echo strLastDate=DateAdd("m", -%MonthsAgo%, Date) >>"%temp%/DateCalculate.vbs" echo strFmtDate=Right(Year(strLastDate),4) ^& Right("0" ^& Month(strLastDate),2) ^& "01" >>"%temp%/DateCalculate.vbs" echo WScript.Echo strFmtDate for /f %%a in ('cscript /nologo "%temp%/DateCalculate.vbs"') do ( set "DstDate=%%a" ) set DstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2% echo,%DstDate% pause