在 Windows cmd 中获取精确到毫秒的系统时间

Get system time accurate to milliseconds in Windows cmd

我试图在 Windows cmd 中将系统时间精确​​到毫秒。我知道可以使用以下方法获得厘秒精度:

echo %time%

我发现其他问题也提出了完全相同的问题,但没有完全回答问题的答案。以下是我目前的发现:

此解决方案仅适用于厘秒精度(与我上面描述的相同): Print time in a batch file (milliseconds)

此方案提供定时器方案,不提供打印当前时间戳方案: Print Batch Time in Milliseconds

如有任何帮助,我们将不胜感激。

正如 Neil 指出的那样,cmd 中没有本机解决方案。对于可以选择使用 PowerShell 的任何人,您可以使用以下内容:

(Get-Date -UFormat "%Y-%m-%d %H:%M:%S").toString() + "." + ((Get-Date).millisecond)

可能有更简洁的方法,但这对我的目的有用。

由于问题被标记为 cmd 从 cmd 调用此问题的适当命令行是:

powershell -command "(Get-Date -UFormat '%Y-%m-%d %H:%M:%S').toString() + '.' + ((Get-Date).millisecond)"

对你来说可能是可行的

如果您有管理员权限,
如果您 运行 使用 WINDOWS 系统
如果你有一台联网的机器配置为时间奴隶(到另一台机器),
如果只想测量时间增量,
您可以查询 Windows "W32tm" 实用程序。

它给你自上次以来的微秒数 时间同步,通过调用

C:\> w32tm /query /status /verbose

(Lotsa 东西打印出来)

然后只取出最后同步时间的行

C:\> w32tm /query /status /verbose | FIND "Time since"

Time since Last Good Sync Time: 15554.1918553s

然后,从 BAT 文件中执行以下操作:

for /F "tokens=7 delims= " %%a in ('w32tm /query /status /verbose ^| find "Time since" ') do set BEFORE_TIME=%%a

(你要测量的就在这里)

for /F "tokens=7 delims= " %%a in ('w32tm /query /status /verbose ^| find "Time since" ') do set AFTER_TIME=%%a

如果你想自动执行减法,需要做更多的工作,但这是可以做到的