Изучение различных методов преобразования времени безотказной работы системы в дни, часы, минуты и секунды с использованием пакетного WMIC

Время безотказной работы системы — это время, в течение которого компьютерная система работала без перезагрузки или выключения. Хотя инструмент командной строки Windows Management Instrumentation (WMIC) обычно используется для получения информации о системе, его также можно использовать для преобразования времени безотказной работы системы в более удобочитаемый формат, например дни, часы, минуты и секунды. В этой статье мы рассмотрим несколько методов достижения этой цели с помощью пакетного написания сценариев.

Метод 1: непосредственное использование команды wmic

@echo off
for /F "skip=1 tokens=1,2 delims=," %%a in ('wmic os get lastbootuptime /format:csv') do (
    set "lastboottime=%%a"
)
wmic path Win32_LocalTime Get /format:csv | findstr /r /c:"^[0-9]" > "%temp%\~wmic_localtime.tmp"
for /F "tokens=1-9 delims=," %%a in ('type "%temp%\~wmic_localtime.tmp"') do (
    set /a "yy=%%a,mm=1%%b-100,dd=1%%c-100,hh=1%%d-100,min=1%%e-100,ss=1%%f-100"
)
set /a "yy=yy,mm=mm,dd=dd,hh=hh,min=min,ss=ss"
call :mktime %yy% %mm% %dd% %hh% %min% %ss%
set "lastboot=%yy%-%mm%-%dd% %hh%:%min%:%ss%"
echo Last Boot Time: %lastboot%
pause
exit /b
:mktime
setlocal
set /a yy=%1,mm=100%2%%100,dd=100%3%%100,hh=100%4%%100,min=100%5%%100,ss=100%6%%100
set /a dd=dd-32075+1461*(yy+4800+(mm-14)/12)/4+367*(mm-2-(mm-14)/12*12)/12-3*((yy+4900+(mm-14)/12)/100)/4
set /a hh=hh*3600+min*60+ss
endlocal & set /a %1=dd,%2=hh
exit /b

Метод 2: использование PowerShell в пакетном скрипте

@echo off
for /f "delims=" %%a in ('powershell -command "& { (Get-Date) - (gcim Win32_OperatingSystem).LastBootUpTime }"') do set "uptime=%%a"
echo System Uptime: %uptime%
pause
exit /b

Метод 3: использование VBScript в пакетном сценарии

@echo off
echo Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\.\root\cimv2") > tmp.vbs
echo Set colOperatingSystems = objWMIService.ExecQuery("SELECT * FROM Win32_OperatingSystem") >> tmp.vbs
echo For Each objOperatingSystem in colOperatingSystems >> tmp.vbs
echo     dtmBootup = objOperatingSystem.LastBootUpTime >> tmp.vbs
echo     dtmLastBootupTime = FormatDateTime(dtmBootup, 0) >> tmp.vbs
echo     Wscript.Echo dtmLastBootupTime >> tmp.vbs
echo Next >> tmp.vbs
for /f "delims=" %%a in ('cscript //nologo tmp.vbs') do set "uptime=%%a"
echo System Uptime: %uptime%
pause
exit /b

В этой статье мы рассмотрели три различных метода преобразования времени безотказной работы системы в дни, часы, минуты и секунды с помощью пакетного сценария. Первый метод включал непосредственное использование команды wmic, а второй метод использовал PowerShell в пакетном сценарии. Третий метод использовал VBScript в пакетном сценарии. Используя эти методы, вы можете легко получить и отформатировать информацию о времени безотказной работы системы в соответствии с вашими потребностями.