以下命令可以获取 Windows 的正常运行时间作为格式化的日期和时间:
>wmic path Win32_OperatingSystem get LastBootUpTime | find "."
20201031212925.500000-180
>systeminfo | find "System Boot Time"
System Boot Time: 10/31/2020, 9:29:25 PM
>net statistics workstation | find ":"
Statistics since 10/31/2020 9:29:36 PM
>wmic os get lastbootuptime | find "."
20201031212925.500000-180
鉴于我想避免:
- 依赖于 Windows 10 默认未安装的命令
- 需要提升的权限才能运行
- 使用 Powershell
- 使用 VBScript
- 解析格式化的日期和时间字符串
如何在几秒钟内获得 Windows 正常运行时间以在批处理文件中使用?
首先,我明白为什么这里的每个人都在推 powershell。 如果没有安装或更新某些东西就无法在其他计算机上运行,它会更好,但对您没有帮助。
不要使用 Windows Scripting Host,而是使用 Windows 附带的 WMIC 工具。WMIC 工具的问题在于它输出的文本充满了 unicode 和 CR/LF 组合,这使得解析起来很痛苦。为了解决这个问题,我们将运行 WMIC 通过 findstr 实用程序返回的任何内容,并将其从“sucks”转换为“sucks less”。
我希望这是你所要求的。
请记住,WMIC 工具已被弃用,最终将消失。希望到那时,每个人都会有一个适合你的 powershell 版本。
Uptime
实用程序,否则我看不到批处理的明确方法。微软早在 1999 年就发布了一款,但后来弃用了它。如果你谷歌一下,你仍然可以找到它。(提示:https ://zedt.eu/tech/windows/microsofts-uptime-utility/ )
Microsoft Uptime 实用程序运行良好。
使用该实用程序和这个小脚本,您可以在几秒钟内获得本地机器的系统正常运行时间:
现在这可能是这个问题中最糟糕的答案,但无论如何都是一个答案:
是一个 C 程序,它将以秒为单位输出自上一个纪元以来的时间。关于它的维基百科页面:https ://en.wikipedia.org/wiki/C_date_and_time_functions
本节具体:
但是,你真的想要自上个纪元以来的秒数吗?其次,如果您现在使用的是批处理脚本:为什么不考虑一种更加独立于平台的方法呢?或者将我刚刚发布的“那种”解决方案与批处理脚本混合在一起?只需静态编译 C 源代码。使用 GNU GCC 时,您可以通过在命令行或编译标志上添加 -static 来做到这一点。