我一直在尝试找到一种方法,让Windows批处理文件在运行时显示当前的UTC时间,也就是获取自1970年以来启动后经过的毫秒数。
有谁知道如何做到这一点吗?
我一直在尝试找到一种方法,让Windows批处理文件在运行时显示当前的UTC时间,也就是获取自1970年以来启动后经过的毫秒数。
有谁知道如何做到这一点吗?
使用WMI:
for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do set %%x
这将设置变量Day
、DayofWeek
、Hour
、Minute
、Month
、Quarter
、Second
、WeekInMonth
和Year
,你可以在之后使用它们。[long]((date).touniversaltime()-[datetime]'1970-01-01').totalmilliseconds
你可以通过批处理文件调用该函数:
powershell "..."
但在这种情况下,你随时可以用真正的编程语言来编写批处理文件。
REM get UTC times:
for /f %%a in ('wmic Path Win32_UTCTime get Year^,Month^,Day^,Hour^,Minute^,Second /Format:List ^| findstr "="') do (set %%a)
Set Second=0%Second%
Set Second=%Second:~-2%
Set Minute=0%Minute%
Set Minute=%Minute:~-2%
Set Hour=0%Hour%
Set Hour=%Hour:~-2%
Set Day=0%Day%
Set Day=%Day:~-2%
Set Month=0%Month%
Set Month=%Month:~-2%
set UTCTIME=%Hour%:%Minute%:%Second%
set UTCDATE=%Year%%Month%%Day%
wmic TIMEZONE get * /value
样例输出
Bias=-480
Caption=(UTC-08:00) Pacific Time (US & Canada)
DaylightBias=-60
DaylightDay=2
DaylightDayOfWeek=0
DaylightHour=2
DaylightMillisecond=0
DaylightMinute=0
DaylightMonth=3
DaylightName=Pacific Daylight Time
DaylightSecond=0
DaylightYear=0
Description=(UTC-08:00) Pacific Time (US & Canada)
SettingID=
StandardBias=0
StandardDay=1
StandardDayOfWeek=0
StandardHour=2
StandardMillisecond=0
StandardMinute=0
StandardMonth=11
StandardName=Pacific Standard Time
StandardSecond=0
StandardYear=0
wmic TIMEZONE get * /value | FIND /I "Description"
FOR /F "tokens=2 delims==" %P IN ('wmic TIMEZONE get * /value ^| FIND /I "Description"') DO Echo %P> var_UTC.txt
现在我想要设置一个包含UTC的变量。
SET /P $SYSTEM_UTC= < var_UTC.txt
现在我想在写入日志时使用变量
(注意将其放在变量中可以控制文本)
echo 2020-12-15 [INFO] %$SYSTEM_UTC% > program.log
你可以查看我的Github代码库,了解一些复杂的程序。