windows - 如何以适合在文件/文件夹名称中使用的格式在 Windows 命令行上获取当前日期/时间?

标签 windows datetime batch-file cmd

更新:现在是 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 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 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%

如果您喜欢 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
Local date is [2012-06-19 10:23:47.048]

关于windows - 如何以适合在文件/文件夹名称中使用的格式在 Windows 命令行上获取当前日期/时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/203090/

相关文章:

parameters - 如何将带有新行的文本作为参数传递给bat文件?

windows - 何时以及在批处理文件中的 FOR/F 和 WMIC 中转义什么

windows - Windows : become/become_user permission/owner problems 上的 Ansible

windows - 如何执行 If 循环并使用批处理查找文本

c# - 如何找到下一个 2 :00 am in . 网的确切日期

mysql - MySQL 的解决方法限制了 TIMESTAMP 范围,同时保留其自动时区转换功能?

c# - 开始使用 C# 和 XAML 创建 Windows 8 Metro 应用程序

c++ - 不知道如何正确使用 IShellWindows::Item

python - 在 pandas 中查找连续分钟

batch-file - 为什么我在运行此脚本时无法在 Python 中加载 _tkinter 模块?