我在批处理文件中具有以下内容。文件名中的MS-DOS时间戳
set timefmt=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
dir *.* > logfile_%timefmt%.log
这工作上午10时后完美,而是因为它增加了一个空间,时间戳,而不是0领先
手之前失败是否有MS-DOS方式创建一个带有时间戳领先0? 我宁愿使用相当标准的命令,以便它可以在Windows XP之后运行。
我在批处理文件中具有以下内容。文件名中的MS-DOS时间戳
set timefmt=%TIME:~0,2%%TIME:~3,2%%TIME:~6,2%
dir *.* > logfile_%timefmt%.log
这工作上午10时后完美,而是因为它增加了一个空间,时间戳,而不是0领先
手之前失败是否有MS-DOS方式创建一个带有时间戳领先0? 我宁愿使用相当标准的命令,以便它可以在Windows XP之后运行。
最好先抽出时间再分析元素。 第三行将具有0
set timefmt=%time%
set timefmt=%TIMEFMT:~0,2%%TIMEFMT:~3,2%%TIMEFMT:~6,2%
set timefmt=%TIMEFMT: =0%
dir *.* > logfile_%timefmt%.log
我有这个问题太替换的空间中,但我有不同的区域设置的计算机(一些显示YYYY-MM-DD的日期,某些毫米/日/年) 。一些显示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%在任何你想要的方式。
Creating a file name as a timestamp in a batch job对接近这个问题的问题有很多答案。我在这里插入这条评论是因为谷歌首先提出了这个答案,这样匆忙的用户可能会错过另一个线程。
我也有这个问题。
所以我做到了。这让我越过了障碍。
:STEP_DATESTAMP
::
REM设置邮戳到年月日
集v_datestampYYYY =%日期:〜6,4%
集v_datestampMM =%日期:〜3,2%
集v_datestampDD =%日期:〜0.2%
集v_datestamp =%v_datestampYYYY %% v_datestampMM %% v_datestampDD%
::
REM设置时间戳HHMMSS
集HH =%的时间:〜0.2%
:: EN确保小时总是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 set HH = 07
if%HH%== 8 set HH = 08
if HH%== 9 set HH = 09
set MM =%time:〜3.2%
set S S =%的时间:〜6.2%
集v_timestamp =%HH% - %MM% - %SS%
点指出这样做的字符串操作之前,首先抓的时间。这是所有语言的最佳做法。 – ChrisGuest