我正在尝试在Windows命令提示符中获取毫秒级准确的系统时间。我知道可以使用以下方法获得10分之一秒的精度:
echo %time%
我发现其他问题也在询问完全相同的事情,但没有一个答案能够完全回答这个问题。到目前为止,我找到了以下内容:
这个解决方案只适用于厘秒精度(与我上面描述的一样): 在批处理文件中打印时间(毫秒) 这个解决方案提供了一个计时器解决方案,但不是一个打印当前时间戳的解决方案: 打印批处理时间(毫秒) 非常感谢任何帮助。
我正在尝试在Windows命令提示符中获取毫秒级准确的系统时间。我知道可以使用以下方法获得10分之一秒的精度:
echo %time%
正如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
(大量的内容被打印出来)
然后只提取最后同步时间所在的那一行。
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
如果你想自动化减法,还需要做一些额外的工作,但是这是可以完成的。