【问题标题】:CMD: How many leftCMD:还剩多少
【发布时间】:2009-07-20 17:37:13
【问题描述】:

我只是想弄清楚,

批处理文件 (CMD) 如何告诉我距离任何日期还剩多少天...???

如:

set setdate=24/07/2009
echo The date is now: %date%
echo Your set date is: %setdate%
echo You're %days% days left from %setdate%

谢谢!

【问题讨论】:

    标签: date batch-file cmd datediff


    【解决方案1】:

    ...好吧,既然提问者要我为他做所有的工作,下面是脚本:

    @echo off & setlocal
    set now=%date%
    set then=2010-08-01
    
    :: split into year, month, day
    set nY=%now:~0,4%&set nM=%now:~5,2%&set nD=%now:~8,2%
    set tY=%then:~0,4%&set tM=%then:~5,2%&set tD=%then:~8,2%
    
    :: remove leading zero
    if "%nM:~,1%"=="0" set nM=%nM:~1%
    if "%tM:~,1%"=="0" set tM=%tM:~1%
    if "%nD:~,1%"=="0" set nD=%nD:~1%
    if "%tD:~,1%"=="0" set tD=%tD:~1%
    
    set mdays=31 28 31 30 31 30 31 31 30 31 30 31
    set n=0
    set t=0
    call :days n %nM% %mdays%
    call :days t %tM% %mdays%
    
    set /a d=(t+tD)-(n+nD) + ((tY-nY) * 365)
    
    goto :skip
    :days
    set var=%1
    set M=%2
    set i=0
    shift & shift
    :days_loop
    set /a i=i+1    
    if %i% geq %M% goto :EOF
    set /a %var%=%var%+%1
    shift & goto :days_loop
    :skip
    
    echo The difference between %now% and %then% is %d% days.
    

    为了比较,在 Python 中也是一样的:

    import datetime
    now = datetime.datetime.now()
    then = datetime.datetime(
        # Do NOT use leading zeros here.
        year = 2010,
        month = 8,
        day = 1,
    )
    diff = then - now
    

    【讨论】:

      【解决方案2】:

      这是一个简单的 VBScript 解决方案:

      Dim dt:    dt    = DateValue(WScript.Arguments.Unnamed(0))
      Dim dtNow: dtNow = Now
      Dim diff:  diff  = DateDiff("d", dtNow, dt)
      
      WScript.Echo "The date is now:  " & FormatDateTime(dtNow, vbShortDate)
      WScript.Echo "Your set date is: " & FormatDateTime(dt, vbShortDate)
      WScript.Echo "You're " & diff & " days left from " & FormatDateTime(dt, vbShortDate)
      

      您可以从批处理文件中调用此脚本并指定目标日期,如下所示:

      cscript filename.vbs 12/25/2009 //nologo
      

      【讨论】:

      • 谢谢,我认为这是迄今为止我见过的最好和最省时的代码!
      【解决方案3】:

      可能可以使用cmd.exe 中的简单数学功能来实现,但这取决于机器的区域设置(如果您使用 DD/MM/ 的日期格式YYYY,它会在我的 YYYY-MM-DD 上中断),并且需要大量代码。

      使用 Perl、PHP 或 Python 等脚本语言可能会更容易。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-07-08
        • 2013-06-24
        • 2017-01-11
        • 2022-01-03
        • 2012-08-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多