相当简单我有这个脚本可以获取当前时间并将其保存到文件中:
for /f %%x in ('wmic path win32_localtime get /format:list ^| findstr "="') do set %%x
echo today=%Year%-%Month%-%Day% > env.properties
唯一的问题是日期是2017-3-9
,我不确定如何将前导0添加到月份和日期,所以我得到了2017-03-09
答案 0 :(得分:2)
这会获取日期和时间,但所有字段的前导零也是如此。显然,您只需使用一个SET命令即可获得所需的值。
for /f "tokens=2 delims==" %%a in ('wmic OS Get localdatetime /value') do set "dt=%%a"
set "YYYY=%dt:~0,4%"
set "MM=%dt:~4,2%"
set "DD=%dt:~6,2%"
set "HH=%dt:~8,2%"
set "Min=%dt:~10,2%"
set "Sec=%dt:~12,2%"
答案 1 :(得分:2)
您可以使用wmic PATH Win32_LocalTime get
以您想要的格式检索日期,但您需要在for /F
循环中添加零。这是一个有效的解决方案:
for /F "delims=" %%Z in ('wmic PATH Win32_LocalTime get Day^,Month^,Year /FORMAT:LIST') do (
for /F "tokens=1* delims==" %%X in ("%%Z") do set "%%X=0%%Y"
)
> "env.properties" echo today=%Year:~-4%-%Month:~-2%-%Day:~-2%
除了定义选项字符串tokens1* delims==
,更改赋值语句set
并扩展echo
命令中所需的位数之外,我还更改了一些内容:
Day
,Month
和Year
,因为您的wmic
命令行返回了许多其他不需要的值。findstr "="
来过滤掉显示为空的行,而是围绕另一个for /F
循环;实际上这些行不是空的,但包含孤立的回车字符,这是由于wmic
输出的Unicode for /F
与ANSI的对话不良造成的;实际上非空行也包含尾随回车符;第二个for /F
循环消除了所有这些转换假象。env.properties
。当然您可以切换到Squashman中建议的their answer命令行wmic OS get LocalDateTime
,但我仍然建议绕过另一个for /F
循环以避免上述转换artefacts(尽管在这种情况下,在整个字符串的开头扩展子字符串时,尾部回车字符不会有害):
for /F "delims=" %%Z in ('wmic OS get LocalDateTime /VALUE') do (
for /F "tokens=1* delims==" %%X in ("%%Z") do set "DATETIME=%%Y"
)
> "env.properties" echo today=%DATETIME:~,4%-%DATETIME:~4,2%-%DATETIME:~6,2%