【问题标题】:MS-DOS timestamp in filename文件名中的 MS-DOS 时间戳
【发布时间】:2013-05-15 16:39:52
【问题描述】:

我在批处理文件中有以下内容。

set timefmt=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%

dir *.* > logfile_%timefmt%.log

这在上午 10 点之后完美运行,但提前失败,因为它在时间戳中添加了一个空格而不是前导 0。

在 MS-DOS 中有没有一种方法可以创建带有前导 0 的时间戳? 我更喜欢使用相当标准的命令,这样它就可以从 Windows XP 开始运行。

【问题讨论】:

    标签: windows dos


    【解决方案1】:

    最好先获取时间,然后再解析元素。 第三行将用 0 替换空格

    set timefmt=%time%
    set timefmt=%TIMEFMT:~0,2%%TIMEFMT:~3,2%%TIMEFMT:~6,2%
    set timefmt=%TIMEFMT: =0%
    dir *.* > logfile_%timefmt%.log
    

    【讨论】:

    • 注意在进行字符串操作之前先获取时间。这是所有语言的最佳做法。
    【解决方案2】:

    我也遇到过这个问题,但是我有不同区域设置的计算机(有些显示日期为 yyyy-mm-dd,有些显示为 mm/dd/yyyy)。有些显示上午和下午的 12 小时制,另一些显示 24 小时制...

    ...所以我最终整理了a tool for saving the current date/timestamp in an environment variable。实际上,该工具只是打印出时间戳,但是有一个如何将其放入环境变量的示例:

    for /f %%x in ('@timestamp.exe') do set TIMESTAMP=%%x
    

    ...然后您可以随意使用 %TIMESTAMP%。

    【讨论】:

      【解决方案3】:

      Creating a file name as a timestamp in a batch job 对与此问题相近的问题有很多答案。我在此处插入此评论,因为谷歌首先提供了此答案,以便赶时间的用户可能会错过其他线程。

      【讨论】:

        【解决方案4】:

        我也有这个问题。
        所以我这样做了。这让我克服了障碍。

        :STEP_DATESTAMP
        ::
        REM 将日期戳设置为 YYYYMMDD
        设置 v_datesampYYYY=%date:~6,4%
        设置 v_datesampMM=%date:~3,2%
        设置 v_datesampDD=%date:~0,2%
        设置 v_datesamp=%v_datestampYYYY%%v_datesampMM%%v_datesampDD%
        ::
        REM 将时间戳设置为 HHMMSS
        设置 HH=%time:~0,2%
        :: 确保小时始终为 2 位数字
        如果 %HH%==0 设置 HH=00
        如果 %HH%==1 设置 HH=01
        如果 %HH%==2 设置 HH=02
        如果 %HH%==3 设置 HH=03
        如果 %HH%==4 设置 HH=04
        如果 %HH%==5 设置 HH=05
        如果 %HH%==6 设置 HH=06
        如果 %HH%==7 设置 HH=07
        如果 %HH%==8 设置 HH=08
        如果 %HH%==9 设置 HH=09
        设置 MM=%time:~3,2%
        设置 SS=%time:~6,2%
        设置 v_timestamp=%HH%-%MM%-%SS%

        【讨论】:

          猜你喜欢
          • 2019-03-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-27
          • 2013-06-01
          • 1970-01-01
          相关资源
          最近更新 更多