批處理bat計算前N個月第一天的日期

字號:


    【方案一】BAT + date.exe(GNU)
    代碼如下:
    @echo off
    rem 調(diào)用GNU for Win32的date.exe
    set "gnuDate=C:/test/date.exe"
    rem 指定月數(shù)
    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 指定月數(shù)
    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