如何在批处理文件中获取昨天的日期格式?
我希望它看起来像这样:M_d_yyyy
请注意,如果有一位数的日期和月份,我希望它是一位数。
示例:8_5_2013
是August 5th, 2013
.
我环顾了几天,但找不到解决方案。非常感谢任何线索。
如何在批处理文件中获取昨天的日期格式?
我希望它看起来像这样:M_d_yyyy
请注意,如果有一位数的日期和月份,我希望它是一位数。
示例:8_5_2013
是August 5th, 2013
.
我环顾了几天,但找不到解决方案。非常感谢任何线索。
免费的 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 格式,因为该格式会在获取目录列表时按时间顺序排序。
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?