文件名中的MS-DOS时间戳

时间:2013-05-21 02:09:15

标签: windows dos

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

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

dir *.* > logfile_%timefmt%.log

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

在MS-DOS中是否有办法创建一个前导0的时间戳? 我更喜欢使用相当标准的命令,以便从Windows XP开始工作。

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

我也遇到过这个问题,但是我的计算机有不同的语言环境(有些显示日期为yyyy-mm-dd,有些是mm / dd / yyyy)。有些显示12小时时钟有AM和PM,有些显示24小时时钟......

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

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

...然后你只需要以任何你想要的方式使用%TIMESTAMP%。

答案 2 :(得分:0)

Creating a file name as a timestamp in a batch job对这个问题有很多答案。我在此处插入此评论是因为Google首先提出了这个答案,以便匆忙的用户可能会错过其他帖子。

答案 3 :(得分:0)

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

:STEP_DATESTAMP
::
REM设置日期戳为YYYYMMDD
set v_datestampYYYY =%date:~6,4%
set v_datestampMM =%date:~3,2%
set v_datestampDD =%date:~0,2%
set v_datestamp =%v_datestampYYYY %% v_datestampMM %% v_datestampDD%
::
REM设置HHMMSS的时间戳
设定HH =%时间:〜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 =%时间:~3,2%
设定SS =%时间:~6,2%
set v_timestamp =%HH% - %MM% - %SS%