如何以合适的格式在 Windows 命令行上获取当前日期/时间以用于文件/文件夹名称? [英] How do I get current date/time on the Windows command line in a suitable format for usage in a file/folder name?

查看:101
本文介绍了如何以合适的格式在 Windows 命令行上获取当前日期/时间以用于文件/文件夹名称?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

更新:现在是 2016 年,我会为此使用 PowerShell,除非有真正令人信服的向后兼容原因,特别是因为使用 date 的区域设置问题.请参阅@npocmaka 的https://stackoverflow.com/a/19799236/8479

<小时>

我可以使用什么 Windows 命令行语句来以可以放入文件名的格式获取当前日期时间?

我想要一个 .bat 文件,它将目录压缩到一个存档中,并将当前日期和时间作为名称的一部分,例如 Code_2008-10-14_2257.zip.有没有什么简单的方法可以做到这一点,独立于机器的区域设置?

我并不介意日期格式,理想情况下应该是 yyyy-mm-dd,但任何简单的都可以.

到目前为止我已经得到了这个,它在我的机器上给了我Tue_10_14_2008_230050_91:

rem 以可以进入文件名的格式获取日期时间.设置_my_datetime=%date%_%time%设置_my_datetime=%_my_datetime:=_%设置_my_datetime=%_my_datetime::=%设置_my_datetime=%_my_datetime:/=_%设置_my_datetime=%_my_datetime:.=_%rem 现在在新的 ZIP 文件名中使用时间戳."d:Program Files7-Zip7z.exe" a -r Code_%_my_datetime%.zip Code

我可以接受这个,但它看起来有点笨重.理想情况下,它会更简短,并具有前面提到的格式.

我使用的是 Windows Server 2003 和 Windows XP Professional.我不想安装额外的实用程序来实现这一点(虽然我意识到有一些可以很好地格式化日期).

解决方案

参见 Windows 批处理文件 (.bat) 以 MMDDYYYY 格式获取当前日期:

@echo offFor/f "tokens=2-4 delims=/" %%a in ('date/t') do (set mydate=%%c-%%a-%%b)对于/f "tokens=1-2 delims=/:" %%a in ('time/t') do (set mytime=%%a%%b)回声%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 offfor/F "usebackq tokens=1,2 delims==" %%i in (`wmic os get LocalDateTime/VALUE 2^>NUL`) do if '.%%i.'=='.LocalDateTime.'设置 ldt=%%j设置 ldt=%ldt:~0,4%-%ldt:~4,2%-%ldt:~6,2% %ldt:~8,2%:%ldt:~10,2%:%ldt:~12,6%echo 本地日期是 [%ldt%]

<块引用>

C:>test.cmd
本地日期是 [2012-06-19 10:23:47.048]

Update: Now that it's 2016 I'd use PowerShell for this unless there's a really compelling backwards-compatible reason for it, particularly because of the regional settings issue with using date. See @npocmaka's https://stackoverflow.com/a/19799236/8479


What's a Windows command line statement(s) I can use to get the current datetime in a format that I can put into a filename?

I want to have a .bat file that zips up a directory into an archive with the current date and time as part of the name, for example, Code_2008-10-14_2257.zip. Is there any easy way I can do this, independent of the regional settings of the machine?

I don't really mind about the date format, ideally it'd be yyyy-mm-dd, but anything simple is fine.

So far I've got this, which on my machine gives me 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 Files7-Zip7z.exe" a -r Code_%_my_datetime%.zip Code

I can live with this, but it seems a bit clunky. Ideally it'd be briefer and have the format mentioned earlier.

I'm using Windows Server 2003 and Windows XP Professional. I don't want to install additional utilities to achieve this (although I realise there are some that will do nice date formatting).

解决方案

See Windows Batch File (.bat) to get current date in MMDDYYYY format:

@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%

If you prefer the time in 24 hour/military format, you can replace the second FOR line with this:

For /f "tokens=1-2 delims=/:" %%a in ("%TIME%") do (set mytime=%%a%%b)

C:> .date.bat
2008-10-14_0642

If you want the date independently of the region day/month order, you can use "WMIC os GET LocalDateTime" as a source, since it's in ISO order:

@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
Local date is [2012-06-19 10:23:47.048]

这篇关于如何以合适的格式在 Windows 命令行上获取当前日期/时间以用于文件/文件夹名称?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆