批处理获取系统安装时间/系统开机时间/电脑唤醒时间及开机使用时间(四)版本升级

没想到这么快版本就升级了。现在是“图形”界面-!-.

先看一下吧。如果重新启动电脑,开机时间不对,应该就是开机总时间那里算错了,暂时不想调了。

代码如下,黄色为主要修改的地方,其他没变(好像):

echo “正在查询,请稍候……”

cls

@echo off

::提取systeminfo保存为systeminfo.txt文件

systeminfo >d:\systeminfo.txt

::导出1000条系统日志存为d:\log.txt文件

wevtutil qe system /c:1000 /rd:true /f:text >d:\log.txt

::在d:\log.txt文件中提取含有Power-Troubleshooter的行保存在d:\aaa.txt文件内。

findstr /n “Power-Troubleshooter” d:\log.txt >d:\aaa.txt

::提取d:\aaa.txt文件第一行并更新到d:\aaa.txt(即最后一次休眠唤醒时间)

setlocal enabledelayedexpansion

for /f “tokens=1* delims=:” %%i in (‘findstr /n .* “d:\aaa.txt”’) do (

set /a m+=1& if !m!==1 (echo %%j>d:\bbb.txt))

::提取行数

for /f “tokens=1,2 delims=:” %%i in (d:\bbb.txt) do set var=%%i

::显示内容"初始安装日期"和“系统启动时间”

type d:\systeminfo.txt | findstr /B “初始安装日期” && type d:\systeminfo.txt | findstr /B “系统启动”

::显示休眠唤醒时间

for /f “skip=%var% delims=” %%a in (d:\log.txt) do (

set date1=%%~a

goto :Result

)

:Result

for /f “tokens=1,2 delims= " %%i in (”%date1%") do (set time0=%%j goto :wake_time

)

:wake_time

set wtime_y=%time0:~0,4%

set wtime_m=%time0:~5,2%

set wtime_d=%time0:~8,2%

set wtime_h=%time0:~11,8%

echo 系统唤醒时间: %wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%

set wtime1=%wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%

::计算及显示电脑使用时间

::1获取启动电脑时间赋值给btime,以供计算使用。

type d:\systeminfo.txt | findstr /B “系统启动”>d:\ddd.txt

for /f "tokens=1,* delims= " %%i in (d:\ddd.txt) do set btime=%%j

for /f “tokens=1,2,3,4,5,6 delims=/:, " %%i in (”%btime%") do (set btime_y=%%i & ^

set btime_m=%%j & ^

set btime_d=%%k & ^

set btime_h=%%l &^

set btime_mi=%%m)

set /a btime_all=%btime_y%3652460+^

%btime_m%302460+^

%btime_d%2460+^

%btime_h%*60+%btime_m%

::计算唤醒总时间。

for /f “tokens=1,2 delims=:” %%i in ("%wtime_h%") do (set wtime_hh=%%i & ^

set wtime_hm=%%j)

set /a wtime_all=%wtime_y%3652460+^

%wtime_m%302460+^

%wtime_d%2460+^

%wtime_hh%*60+%wtime_hm%

::当前时间总时间。

set ntime_y=%date:~0,4%

set ntime_m=%date:~5,2%

set ntime_d=%date:~8,2%

set ntime_h=%time:~0,2%

set ntime_mi=%time:~3,2%

set /a ntime_all=%ntime_y%3652460+^

%ntime_m%302460+^

%ntime_d%2460+^

%ntime_h%*60+%ntime_mi%

::时间差计算

set /a b_wtime=%btime_all%-%wtime_all%

set /a n_wtime=%ntime_all%-%wtime_all%

set /a n_btime=%ntime_all%-%btime_all%

echo ------------------------------

if %b_wtime% LEQ 0 (echo 电脑使用时间为:%n_wtime%分钟。& set fin_time=%n_wtime%) else (echo 电脑使用时间为:%n_btime%分钟。 & set fin_time=%n_btime%)

echo ------------------------------

del d:\aaa.txt

del d:\bbb.txt

del d:\log.txt

del d:\systeminfo.txt

del d:\ddd.txt

if %n_btime% GTR 10000 (echo 你的电脑距离上次重启已经7天了,建议重启一次电脑!!!!) ::此行内容不会在窗口显示,是可以改的,太麻烦了,不改了。

set aa=^

setlocal enabledelayedexpansion

msg %username% “系统启动时间:%btime% !aa!系统唤醒时间:%%wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%%!aa!电脑使用时间为:%fin_time%分钟。”

::这里是关键修改位置,aa=^下面的两个空行不可以删除,不然对话框不会换行。

pause

::如果把pause行注释掉dos窗口会关闭,只显示图形窗口。保留的话,两个都显示。

echo on

注意:保存为ansi编码可以正常运行,utf-8不行。

完全代码,复制可用:

echo "正在查询,请稍候……"

cls

@echo off

::提取systeminfo保存为systeminfo.txt文件

systeminfo >d:\systeminfo.txt

::导出1000条系统日志存为d:\log.txt文件

wevtutil qe system /c:1000 /rd:true /f:text >d:\log.txt

::在d:\log.txt文件中提取含有Power-Troubleshooter的行保存在d:\aaa.txt文件内。

findstr /n "Power-Troubleshooter" d:\log.txt >d:\aaa.txt

::提取d:\aaa.txt文件第一行并更新到d:\aaa.txt(即最后一次休眠唤醒时间)

setlocal enabledelayedexpansion

for /f "tokens=1* delims=:" %%i in ('findstr /n .* "d:\aaa.txt"') do (

set /a m+=1& if !m!==1 (echo %%j>d:\bbb.txt))

::提取行数

for /f "tokens=1,2 delims=:" %%i in (d:\bbb.txt) do set var=%%i

::显示内容"初始安装日期"和“系统启动时间”

type d:\systeminfo.txt | findstr /B "初始安装日期" && type d:\systeminfo.txt | findstr /B "系统启动"

::显示休眠唤醒时间

for /f "skip=%var% delims=" %%a in (d:\log.txt) do (

set date1=%%~a

goto :Result

)

:Result

for /f "tokens=1,2 delims= " %%i in ("%date1%") do (set time0=%%j goto :wake_time

)

:wake_time

set wtime_y=%time0:~0,4%

set wtime_m=%time0:~5,2%

set wtime_d=%time0:~8,2%

set wtime_h=%time0:~11,8%

echo 系统唤醒时间: %wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%

::计算及显示电脑使用时间

::1获取启动电脑时间赋值给btime,以供计算使用。

type d:\systeminfo.txt | findstr /B "系统启动">d:\ddd.txt

for /f "tokens=1,* delims= " %%i in (d:\ddd.txt) do set btime=%%j

for /f "tokens=1,2,3,4,5,6 delims=/:, " %%i in ("%btime%") do (set btime_y=%%i & ^

set btime_m=%%j & ^

set btime_d=%%k & ^

set btime_h=%%l &^

set btime_mi=%%m)

set /a btime_all=%btime_y%*365*24*60+^

%btime_m%*30*24*60+^

%btime_d%*24*60+^

%btime_h%*60+%btime_m%

::计算唤醒总时间。

for /f "tokens=1,2 delims=:" %%i in ("%wtime_h%") do (set wtime_hh=%%i & ^

set wtime_hm=%%j)

set /a wtime_all=%wtime_y%*365*24*60+^

%wtime_m%*30*24*60+^

%wtime_d%*24*60+^

%wtime_hh%*60+%wtime_hm%

::当前时间总时间。

set ntime_y=%date:~0,4%

set ntime_m=%date:~5,2%

set ntime_d=%date:~8,2%

set ntime_h=%time:~0,2%

set ntime_mi=%time:~3,2%

set /a ntime_all=%ntime_y%*365*24*60+^

%ntime_m%*30*24*60+^

%ntime_d%*24*60+^

%ntime_h%*60+%ntime_mi%

::时间差计算

set /a b_wtime=%btime_all%-%wtime_all%

set /a n_wtime=%ntime_all%-%wtime_all%

set /a n_btime=%ntime_all%-%btime_all%

echo ------------------------------

if %b_wtime% LEQ 0 (echo 电脑使用时间为:%n_wtime%分钟。& set fin_time=%n_wtime%) else (echo 电脑使用时间为:%n_btime%分钟。 & set fin_time=%n_btime%)

echo ------------------------------

::删除临时文件。

del d:\aaa.txt

del d:\bbb.txt

del d:\log.txt

del d:\systeminfo.txt

del d:\ddd.txt

if %n_btime% GTR 10000 (echo 你的电脑距离上次重启已经7天了,建议重启一次电脑!!!!)

set aa=^

setlocal enabledelayedexpansion

msg %username% 系统启动时间:%btime% !aa!系统唤醒时间:%wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%!aa!电脑使用时间为:%fin_time%分钟。”

pause

echo on

友情链接:

Copyright © 2022 1998年世界杯主题曲_腾讯世界杯 - dg-zmt.com All Rights Reserved.