我在 Windows 批处理文件中生成时间戳时遇到问题,因为我在不同的 Windows 版本上得到不同的日期格式。
我的机器:
>echo %date%
>Tue 11/17/2009
友机:
>echo %date%
>11/17/2009
我想必须有某种方法可以使用 for /f 从两个字符串中获取日期(11/17/2009)。我一直在尝试和谷歌搜索,但找不到答案。
有没有另一种方法可以在不使用%date%的情况下获取时间戳?
查看doff.exe。我经常使用它来获取命名日志文件的时间戳。从其网站:
DOFF 打印格式化的日期和时间,并带有可选的日期偏移量(例如 -1 打印昨天的日期,+1 打印明天的日期)。要查看所有可用选项,请执行“doff -h”。我通常使用此实用程序来重命名日志文件,以便它们包含时间戳(请参见下面的第三个示例)。该代码应该在 Unix/Linux 以及 DOS 下编译。
命令示例:
C:\>doff
19991108131135
如果不带参数,则输出为当前日期/时间,格式如下:yyyymmddhhmiss
C:\>doff mm/dd/yyyy
11/08/1999
在上面的示例中,给出了日期格式规范。
@echo off
for /f "tokens=1-3 delims=/ " %%a in ('doff mm/dd/yyyy -1') do (
set mm=%%a
set dd=%%b
set yyyy=%%c)
rename httpd-access.log httpd-access-%yyyy%%mm%%dd%.log
上面的示例批处理文件显示了一种根据昨天的日期重命名日志文件的巧妙方法。 “for”命令执行doff来打印昨天的日期(“-1”参数指定昨天),然后将日期的每个组成部分提取到DOS批处理文件变量中。 “rename”命令将“httpd-access.log”重命名为“httpd-access-[昨天的日期].log”
另请查看 Microsoft 的 now.exe,可在Windows Server 2003 资源工具包工具。我发现的一件坏事(困难的方式)是它将 ERRORLEVEL 设置为打印的字符数。
看起来像这样:
c:\>now
Thu May 19 14:26:45 2011
Help:
NOW : Display Message with Current Date and Time
Usage : NOW [message to be printed with time-stamp]
NOW displays the current time, followed by its command-line arguments.
NOW is similar to the standard ECHO command, but with a time-stamp.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)