我一直在尝试找到一种获取Windows批处理文件的方法,以便在运行时显示当前的UTC时间。换句话说,获得自1970年启动以来的当前毫秒数。
有谁知道如何做到这一点。
答案 0 :(得分:10)
使用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
。
尽管如此,你不会轻易从Windows获得Unix纪元。如果你有PowerShell,你可以使用
[long]((date).touniversaltime()-[datetime]'1970-01-01').totalmilliseconds
您可以通过
从批处理文件调用powershell "..."
但在这种情况下,无论如何你都可以用真实语言编写批处理文件。
答案 1 :(得分:0)
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
在此示例中,我需要UTC信息,以便在输出到日志时可以插入UTC信息:
wmic TIMEZONE get * /value | FIND /I "Description"
现在我想解析字符串:
(在.cmd脚本/程序中请注意,仅将%% P,%P用于控制台)
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存储库中的某些复杂程序
答案 2 :(得分:0)
替代方案:
StringBuilder