更新:现在是 2016 年,我会为此使用 PowerShell,除非有一个非常令人信服的向后兼容原因,特别是因为使用date.
date
我可以使用什么 Windows 命令行语句以可以放入文件名的格式获取当前日期时间?
我想要一个 .bat 文件,它将一个目录压缩到一个存档中,并将当前日期和时间作为名称的一部分,例如,Code_2008-10-14_2257.zip. 有没有什么简单的方法可以做到这一点,独立于机器的区域设置?
Code_2008-10-14_2257.zip
我真的不介意日期格式,理想情况下它是 yyyy-mm-dd,但任何简单的都可以。
到目前为止,我已经得到了这个,它在我的机器上给了我Tue_10_14_2008_230050_91:
Tue_10_14_2008_230050_91
rem Get the datetime in a format that can go in a filename. set _my_datetime=%date%_%time% set _my_datetime=%_my_datetime: =_% set _my_datetime=%_my_datetime::=% set _my_datetime=%_my_datetime:/=_% set _my_datetime=%_my_datetime:.=_% rem Now use the timestamp by in a new ZIP file name. "d:\Program Files\7-Zip\7z.exe" a -r Code_%_my_datetime%.zip Code
我可以忍受这个,但它似乎有点笨拙。理想情况下,它会更简短,并具有前面提到的格式。
我正在使用 Windows Server 2003 和 Windows XP Professional。我不想安装额外的实用程序来实现这一点(尽管我意识到有些可以很好地格式化日期)。
请参阅 Windows 批处理文件 (.bat) 以获取 MMDDYYYY 格式的当前日期 :
@echo off For /f "tokens=2-4 delims=/ " %%a in ('date /t') do (set mydate=%%c-%%a-%%b) For /f "tokens=1-2 delims=/:" %%a in ('time /t') do (set mytime=%%a%%b) echo %mydate%_%mytime%
如果您更喜欢 24 小时/军用格式的时间,可以将第二个 FOR 行替换为:
For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)
C:> .\date.bat 2008-10-14_0642
如果您想要独立于地区日/月顺序的日期,您可以使用“WMIC os GET LocalDateTime”作为源,因为它是 ISO 顺序:
@echo off for /F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime /VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.' set ldt=%%j set ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6% echo Local date is [%ldt%]
C:>test.cmd 本地日期为 [2012-06-19 10:23:47.048]