在Windows命令提示符中获取精确到毫秒的系统时间

5

我正在尝试在Windows命令提示符中获取毫秒级准确的系统时间。我知道可以使用以下方法获得10分之一秒的精度:

echo %time%

我发现其他问题也在询问完全相同的事情,但没有一个答案能够完全回答这个问题。到目前为止,我找到了以下内容:
这个解决方案只适用于厘秒精度(与我上面描述的一样): 在批处理文件中打印时间(毫秒) 这个解决方案提供了一个计时器解决方案,但不是一个打印当前时间戳的解决方案: 打印批处理时间(毫秒) 非常感谢任何帮助。

我会编写一个程序来完成这个任务,并从Windows命令提示符中调用它。在这方面有限制吗? - Neil
我相信已经有很多我可以使用的实用程序,但我希望我错过了更明显的东西。这似乎应该是大多数操作系统的标准功能。 - Yabasa
MS-DOS早已经写了很久了,朋友。;) 不过在PowerShell中可能会有更多的支持。 - Neil
如果不可能也没关系。我只是想确定一下再着手解决问题。在这种情况下,我不是系统管理员,所以希望能够在cmd的能力范围内解决问题。另外,我只是出于好奇,为了将来的参考而已。 - Yabasa
没有适用于纯MS-DOS(现代或其他)的原生解决方案。 - Neil
我明白了。如果您想正式回答,我会接受的。感谢提供信息。 - Yabasa
2个回答

3

正如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)"

1
问题是:通过接受百分之一秒甚至几秒钟的延迟来加载PowerShell(或任何其他实用程序),以毫秒精度获取时间是否有用? - Stephan
如果你每次记录时间时都要加载PowerShell或其他实用工具,那我会同意。但在我的情况下,我只对在单个PowerShell会话期间记录时间感兴趣。 - Yabasa

0

这对你可能是可行的事情

如果您拥有管理员权限,
并且如果您正在运行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

如果你想自动化减法,还需要做一些额外的工作,但是这是可以完成的。


糟糕,我的示例代码缺少了FIND命令:像这样:C:> w32tm /query /status /verbose | FIND "Time since" - JustTryingToHelp
1
请将您的代码格式化为代码,这样我们就更容易阅读它了。 - Andrzej Ziółek

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接