【问题标题】:Format date in Windows 7 batch job在 Windows 7 批处理作业中格式化日期
【发布时间】:2013-08-03 01:56:07
【问题描述】:

我正在尝试在 Windows 7 批处理作业中使用当前日期。批处理作业会打开多个附加了今天日期的文件。 示例:

start \\\Directory_Name\Rpts\20130801\0000A060_FileName_20130801.pdf

start \\\Directory_Name\Rpts\20130801\0000P083_FileName_20130801.pdf

start \\\Directory_Name\Rpts\20130801\00007P12_FileName_20130801.pdf

如果我运行 echo %date% 我会得到: “2013 年 8 月 1 日星期四”

我知道我可以运行 echo %date:/=% 并获得: "星期四 08012013*"

但我想删除“星期四”(今天)并将日期格式化为“20130801”(yyyymmdd)而不是 mmddyyyy。

因此,插入正确的%date% 命令后,打开文件命令最终将如下所示:start \\\Directory_Name\Rpts\%date%\00007P12_FileName_%date%.pdf

有人知道我该怎么做吗?

【问题讨论】:

    标签: date batch-file cmd format


    【解决方案1】:

    一种稳健的、区域不敏感的方法:

    @echo off
    for /f "delims=" %%a in ('wmic OS Get localdatetime  ^| find "."') do set "dt=%%a"
    set "YYYY=%dt:~0,4%"
    set "MM=%dt:~4,2%"
    set "DD=%dt:~6,2%"
    set "HH=%dt:~8,2%"
    set "Min=%dt:~10,2%"
    set "Sec=%dt:~12,2%"
    
    set datestamp=%YYYY%%MM%%DD%
    set timestamp=%HH%%Min%%Sec%
    set fullstamp=%YYYY%-%MM%-%DD%_%HH%-%Min%-%Sec%
    echo datestamp: "%datestamp%"
    echo timestamp: "%timestamp%"
    echo fullstamp: "%fullstamp%"
    pause
    

    【讨论】:

      【解决方案2】:

      这是使用子字符串的一种更简单的方法:

      set buildDate=%DATE:~4,10%
      set dateStr=%buildDate:~6,4%%buildDate:~3,2%%buildDate:~0,2%
      

      【讨论】:

      • 这几乎可以正常工作。日期显示为 20130108,我需要它是 20130801。抱歉,我试图玩弄你的代码,但我无法理解什么在做什么。
      • 这里是瘦身:%buildDate:~6,4% 将从 buildDate 字符串的第 6 位开始并复制 4 个字符,因此它将复制“08/01/2013”​​的“2013” ”。因此,将其更改为 yyyymmdd 所需要做的就是将上面的 ~3,2 和 ~0,2 部分切换为: set dateStr=%buildDate:~6,4%%buildDate:~0,2% %buildDate:~3,2%
      【解决方案3】:

      这是一个独立于本地时间格式的解决方案:

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

      然后%datetime:~0,8% 会给你你的YYYYMMDD

      【讨论】:

        【解决方案4】:

        试试这个。它使用 for 循环来处理日期内容:

        for /f "delims=/ tokens=1-3" %%a in ("%date%") do (
        rem Lets name our new variable "rdate" for reverse date
        set rdate=%%c%%b%%a
        )
        

        这应该可以正常工作。只需将其称为 %rdate%。

        希望这有帮助,莫娜

        【讨论】:

        • 请注意,这仅适用于批处理文件,要在 cmd 中使用,然后将 %% 替换为 %
        • 注意:这只有在%date%之后添加双引号才有效。
        猜你喜欢
        • 2010-11-14
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-11-07
        • 2021-01-02
        相关资源
        最近更新 更多