批处理文件:以格式获取昨天的日期:M_d_yyyy

时间:2013-09-23 23:41:39

标签: date batch-file

如何在批处理文件中获取昨天的日期格式?

我希望它看起来像这样:M_d_yyyy

请注意,如果日期和月份有一位数字,我希望它是单位数字。

示例:8_5_2013August 5th, 2013

我环顾了几天但找不到解决办法......任何领导都非常感激。

2 个答案:

答案 0 :(得分:3)

免费的第三方可执行文件没有任何问题,但我们中的一些人不允许在我们的工作机器上使用它们。

我编写了一个功能强大的hybrid JScript/batch utility called getTimestamp.bat,几乎可以在Windows机器上进行任何日期和时间计算。

有许多选项可用于指定基准日期和时间,许多选项可用于向日期和时间添加正偏移或负偏移,许多用于格式化结果的选项以及用于在变量中捕获结果的选项。输入和输出都可以直接表示为本地时间,UTC或您选择的任何时区。完整的文档嵌入在脚本中。

该实用程序是纯脚本,可​​以在XP前面的任何现代Windows机器上运行 - 不需要第三方可执行文件。

假设getTimestamp.bat位于当前目录中,或者更好,位于PATH中的某个位置,则以下简单调用将定义包含M_D_YYYY格式的昨天日期的dt变量:

call getTimestamp -od -1 -f {m}_{d}_{yyyy} -r dt

注意:当我在文件名中添加日期时,我喜欢使用YYYY_MM_DD格式,因为在获取目录列表时,该格式将按时间顺序排序。

答案 1 :(得分:2)

我认为你应该从UnxUtils获取date.exe。

date.exe --date="1 day ago" "+%-m_%d_%Y"

下载:http://sourceforge.net/projects/unxutils/files/unxutils/current/
手册页:http://www.ss64.com/bash/date.html


@echo off
setlocal
set magic="c:\unx\usr\local\wbin\date.exe" --date="1 day ago" "+%%-m_%%d_%%Y"
for /f %%i in ('%magic%') do set yesterdate=%%i
echo yesterdate = %yesterdate%

如果您只想使用批处理语言,那么最终会得到100 lines of incomprehensible batch code更新:或者使用下面答案中公布的dbenham混合批处理/ JScript解决方案,至少使用理智的Windows API。


参见: How to get current datetime on Windows command line, in a suitable format for using in a filename?