【问题标题】:Capture the date into a batch file variable将日期捕获到批处理文件变量中
【发布时间】:2015-05-08 08:10:25
【问题描述】:

我正在编写一个批处理文件来复制一些数据,我遇到的问题是,我想在变量中捕获日期,以便可以将其用作文件名。我想要 dd-mm-yyyy 的格式。

我找到了这个例子here,但我无法将它转换成我需要的格式。

【问题讨论】:

  • 我推荐 YYYY-MM-DD 以便它按时间顺序排序

标签: date batch-file


【解决方案1】:

这是一个使用 PowerShell 的解决方案,它预装在几乎所有版本的 Windows 上,比批处理功能强大得多。

PowerShell 代码

Get-Date -Format 'yyyy-MM-dd'

从批处理文件调用

for /f %%a in ('powershell -nop -c "Get-Date -Format 'yyyy-MM-dd'"') do set newdate=%%a

【讨论】:

    【解决方案2】:
    :date
    set dateyear=%date:~-4%
    if %date:~-7,-5%==01 set datemonth=January
    if %date:~-7,-5%==02 set datemonth=February
    if %date:~-7,-5%==03 set datemonth=march
    if %date:~-7,-5%==04 set datemonth=April
    if %date:~-7,-5%==05 set datemonth=may
    if %date:~-7,-5%==06 set datemonth=June
    if %date:~-7,-5%==07 set datemonth=July
    if %date:~-7,-5%==08 set datemonth=August
    if %date:~-7,-5%==09 set datemonth=September
    if %date:~-7,-5%==10 set datemonth=October
    if %date:~-7,-5%==11 set datemonth=November
    if %date:~-7,-5%==12 set datemonth=December
    set dateday=%date:~-10,-8%
    echo It is %dateday% %datemonth% %dateyear%, sir.
    exit /B 0
    :xpdate
    echo It is %date%, sir.
    %speech% "It is %date%, sir."
    exit /B 0
    :w7dat
    if %time:~0,-9% GTR 12 (set /a timehour=%time:~0,-9%-12) else set timehour=%time:~0,-9%
    if %time:~3,1%==0 (set timeminute=%time:~4,1%) else set timeminute=%time:~3,2%
    set dateyear=%date:~-4%
    if %date:~-7,-5%==01 set datemonth=January
    if %date:~-7,-5%==02 set datemonth=February
    if %date:~-7,-5%==03 set datemonth=march
    if %date:~-7,-5%==04 set datemonth=April
    if %date:~-7,-5%==05 set datemonth=may
    if %date:~-7,-5%==06 set datemonth=June
    if %date:~-7,-5%==07 set datemonth=July
    if %date:~-7,-5%==08 set datemonth=August
    if %date:~-7,-5%==09 set datemonth=September
    if %date:~-7,-5%==10 set datemonth=October
    if %date:~-7,-5%==11 set datemonth=November
    if %date:~-7,-5%==12 set datemonth=December
    set dateday=%date:~-10,-8%
    echo It is currently %timeminute% minutes past %timehour% on %dateday% %datemonth% %dateyear%, sir.
    exit /B 0
    

    这是我在批处理 AI 中使用的,只需将 :date :w7dat 和所有这些更改为您需要的内容

    【讨论】:

      【解决方案3】:

      解决方案

      set yy=%date:~-4%
      set mm=%date:~-7,2%
      set dd=%date:~-10,2%
      set newdate=%dd%%mm%%yy%
      echo %newdate%
      

      【讨论】:

        【解决方案4】:

        此解决方案独立于区域设置:

        for /f "tokens=2 delims==" %%I in ('wmic os get localdatetime /format:list') do set datetime=%%I
        

        它会给你(独立于区域设置!):

          20130802203023.304000+120 
        ( YYYYMMDDhhmmss.<fraction>+/-<timedifference to UTC>  )
        

        从这里开始,很容易:

        set mydate=%datetime:~6,2%-%datetime:~4,2%-%datetime:~0,4%
        echo %mydate%
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2012-05-19
          相关资源
          最近更新 更多