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)doset 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%
::11
set wtime_d=%time0:~8,2%
::12
set wtime_h=%time0:~11,8%
set /a wtime1=%wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%
echo 系統喚醒時間: %wtime_y%/%wtime_m%/%wtime_d%, %wtime_h%
::下面兩行本應該在11和12的位置,但爲了上面一行顯示美觀,顯示完後再更改,不然數值是08時後面計算會出錯。
if %wtime_m:~0,1%==0 set wtime_m=%wtime_m:~1,1%
if %wtime_d:~0,1%==0 set wtime_d=%wtime_d:~1,1%
::計算及顯示電腦使用時間
::1獲取啓動電腦時間賦值給btime,以供計算使用。
type d:\systeminfo.txt | findstr /B "系統啓動">d:\ddd.txt
for /f "tokens=1,* delims= " %%i in(d:\ddd.txt)doset 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)
::將上面的08這樣的數值都改成8。
if %btime_m:~0,1%==0 set btime_m=%btime_m:~1,1%
if %btime_d:~0,1%==0 set btime_d=%btime_d:~1,1%
if %btime_h:~0,1%==0 set btime_h=%btime_h:~1,1%
if %btime_mi:~0,1%==0 set btime_mi=%btime_mi:~1,1%
set /a btime_all=%btime_y%*365*24*60+^
%btime_m%*30*24*60+^
%btime_d%*24*60+^
%btime_h%*60+%btime_mi%
::計算喚醒總時間。
for /f "tokens=1,2 delims=:" %%i in("%wtime_h%")do(set /a wtime_hh=%%i*1 & ^
set /a wtime_hm=%%j*1)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%
::下面同樣是改08爲8。
if %ntime_m:~0,1%==0 set ntime_m=%ntime_m:~1,1%
if %ntime_d:~0,1%==0 set ntime_d=%ntime_d:~1,1%
::當前時間中小時前是沒有0的,不用改。
if %ntime_mi:~0,1%==0 set ntime_mi=%ntime_mi:~1,1%
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 btime_all=%btime_all%
echo wtime_all=%wtime_all%
echo ntime_all=%ntime_all%
echo b_wtime=%b_wtime%
echo n_wtime=%n_wtime%
echo n_btime=%n_btime%
echo ------------------------------
if %b_wtime% LEQ 0 (echo 電腦使用時間爲:%n_wtime%分鐘。&set fin_time=%n_wtime%)else(echo 電腦使用時間爲:%n_btime%分鐘。 &set fin_time=%n_btime%)echo ------------------------------
if %n_btime% GTR 10000 (echo 你的電腦距離上次重啓已經7天了,建議重啓一次電腦!!!!)set hh=^
setlocal enabledelayedexpansion
msg %username% "系統啓動時間:%btime% !hh!系統喚醒時間:%wtime1%!hh!電腦使用時間爲:%fin_time%分鐘。"
del d:\aaa.txt
del d:\bbb.txt
del d:\log.txt
del d:\systeminfo.txt
del d:\ddd.txt
::下面一行註釋掉後,dos窗口自動關掉,只顯示windows窗口。
::pause
echo on