以下命令可以以格式化的日期和时间形式获取 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 正常运行时间?
答案1
首先,我明白为什么这里的每个人都在推崇 powershell。 更好但如果不安装或更新某些东西它就无法在其他计算机上运行,那么它就无济于事。
不要使用 Windows Scripting Host,而是使用 Windows 自带的 WMIC 工具。WMIC 工具的问题是它输出的文本充满了 unicode 和 CR/LF 组合,因此很难解析。为了解决这个问题,我们将通过 findstr 实用程序运行 WMIC 返回的任何内容,并将其从“糟糕”转换为“糟糕”。
@echo off
:: Make sure our variable is empty
Set SystemUptime=
Echo SystemUptime="%SystemUptime%"
(for /F "tokens=1,* delims==" %%v in (
'wmic path Win32_PerfFormattedData_PerfOS_System get SystemUptime /format:list ^| findstr "[0-9]"'
) do (
Set "%%v=%%w"
))
Echo SystemUptime="%SystemUptime%"
我希望这就是你所要求的。
记住,WMIC 工具已被弃用,最终将会消失希望到那时,每个人都会有一个适合自己的 powershell 版本。
答案2
现在这可能是这个问题中最糟糕的答案,但无论如何答案是:
#include <stdio.h>
#include <time.h>
int main() {
printf("%lu", time(0));
return 0;
}
是一个 C 程序,它将输出自上一个纪元以来的时间(以秒为单位)。有关它的维基百科页面:https://en.wikipedia.org/wiki/C_date_and_time_functions
本节具体如下:
将系统的当前时间作为 time_t 值返回,单位为秒数(通常是自某个纪元以来的时间,通常是 Unix 纪元)。纪元的值取决于操作系统;通常使用 1900 和 1970。请参阅 RFC 868。
但是,您真的想要自上一个纪元以来的秒数吗?其次,如果您现在使用的是批处理脚本:为什么不考虑一种更独立于平台的方法呢?或者将我刚刚发布的“那种”解决方案与批处理脚本混合使用?只需静态编译 C 源代码即可。使用 GNU GCC 时,您可以通过在命令行或编译标志中添加 -static 来执行此操作。
答案3
- 编辑:除非你愿意下载第三方的,否则我看不出有解决这个问题的明确方法
Uptime
公用事业。
微软在 1999 年发布了一个,但后来弃用了它。如果你在 Google 上搜索一下,你仍然可以找到它。(提示:https://zedt.eu/tech/windows/microsofts-uptime-utility/)
Microsoft Uptime 实用程序运行良好。
使用该实用程序和这个小脚本,您可以以秒为单位显示本地机器的系统正常运行时间:
@ECHO 关闭 设置本地 中立证券 如果存在 .\uptime.txt DEL /A /F .\uptime.txt .\uptime.exe > .\uptime.txt FOR /F "TOKENS=6,8,10,12" %%G IN ( .\uptime.txt ) DO ( 设置/A 天=%%G` 设置/A 小时=%%H` SET /A 分钟=%%I SET /A 秒=%%J ) 设置/A TotalUptimeInSeconds=(%天% * 86400) + (%小时% * 3600) + (%分钟% * 60) + %秒% ECHO 系统正常运行时间为 %TotalUptimeInSeconds% 秒。 端到端 退出/b