0

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

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

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

示例:8_5_2013August 5th, 2013.

我环顾了几天,但找不到解决方案。非常感谢任何线索。

4

2 回答 2

3

免费的 3rd 方可执行文件没有错,但我们中的一些人不允许在我们的工作机器上使用它们。

我编写了一个名为 getTimestamp.bat 的强大的混合 JScript/批处理实用程序,它几乎可以在 Windows 机器上进行任何日期和时间计算。

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

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

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

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

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

于 2013-09-24T11:47:07.663 回答
2

I think you should get date.exe from UnxUtils.

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

Download: http://sourceforge.net/projects/unxutils/files/unxutils/current/
Man page: 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%

If you want to do it with just batch language, you'll end up with nearly 100 lines of incomprehensible batch code. UPDATE: or use dbenham's hybrid batch/JScript solution posted in the answer below, which at least uses sane Windows APIs.


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

于 2013-09-24T00:43:43.373 回答