批处理bat计算前N个月第一天的日期
【方案一】BAT+date.exe(GNU)
@echooff
rem调用GNUforWin32的date.exe
set"gnuDate=C:/test/date.exe"
rem指定月数
setMonthsAgo=1
for/f%%ain('%gnuDate%-d"%MonthsAgo%monthsago""+%%Y-%%m-01"')do(
set"DstDate=%%a"
)
)
echo,%DstDate%
pause
【方案二】BAT+VBS
@echooff
rem指定月数
setMonthsAgo=2
>"%temp%/DateCalculate.vbs"echostrLastDate=DateAdd("m",-%MonthsAgo%,Date)
>>"%temp%/DateCalculate.vbs"echostrFmtDate=Right(Year(strLastDate),4)^&Right("0"^&Month(strLastDate),2)^&"01"
>>"%temp%/DateCalculate.vbs"echoWScript.EchostrFmtDate
for/f%%ain('cscript/nologo"%temp%/DateCalculate.vbs"')do(
set"DstDate=%%a"
)
setDstDate=%DstDate:~0,4%-%DstDate:~4,2%-%DstDate:~6,2%
echo,%DstDate%
pause