Обрезать вывод SystemInfo / Boot Time и установить в качестве переменной? - PullRequest
1 голос
/ 27 сентября 2019

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

Я использую эту командураспечатать на экран:

SystemInfo /s PC_NAME | find "Boot Time:"

и получить такой результат:

System Boot Time:          27/09/2019, 9:15:16 AM

Но я бы хотел только часть "27/09/2019, 9:15:16 AM"установить в качестве переменной.

Спасибо

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Помните, что systeminfo локализован.Так что «Время загрузки» верно только для английских версий Windows.

Так что было бы лучше использовать WMIC для любого языка системы, такого как код ниже:

@echo off
Title Last Boot Time
for /f %%a in ('WMIC OS GET lastbootuptime ^| find "."') DO set "DTS=%%a"
set "BOOTTIME=%DTS:~0,4%-%DTS:~4,2%-%DTS:~6,2%  %DTS:~8,2%:%DTS:~10,2%"
echo DTS      : %DTS%
echo BOOTTIME : %BOOTTIME%
pause

И если вам нравится с VBScript, как это:

Option Explicit
' Declare variables
Dim colItems, objItem, objWMIService,ws,Title
Dim strBoot, strBootDate, strBootDay, strBootHour, strBootMins
Dim strBootMonth, strBootTime, strBootYear, strComputer, strMsg, strQuery
Title = "La dernière heure de démarrage de votre ordinateur by Hackoo 2018"
Set ws = CreateObject( "WScript.Shell" )
strComputer = ws.ExpandEnvironmentStrings( "%COMPUTERNAME%" )

If IsEmpty(strComputer) Then
    WScript.quit()
ElseIf  strComputer = "" Then
    strComputer = "."
End If

' Connect to specified computer
Set objWMIService = GetObject( "winmgmts://" & strComputer & "/root/cimv2" )
Set colItems = objWMIService.ExecQuery( "Select * from Win32_OperatingSystem", , 48 )
For Each objItem in colItems
    strBootYear  = Left( objItem.LastBootUpTime, 4 )
    strBootMonth = Mid( objItem.LastBootUpTime,  5, 2 )
    strBootDay   = Mid( objItem.LastBootUpTime,  7, 2 )
    strBootDate  = DateValue( strBootDay & "-" & strBootMonth & "-" & strBootYear )
    strBootHour  = Mid( objItem.LastBootUpTime,  9, 2 )
    strBootMins  = Mid( objItem.LastBootUpTime, 11, 2 )
    strBootTime  = strBootHour & ":" & strBootMins
    strBoot = strBootDate & ", " & strBootTime
    strMsg  = "La dernière heure de démarrage du PC : " & chr(34) & strComputer & chr(34) & " est : " &_
    vbCrlf & strBoot
Next

' Display results
MsgBox strMsg,vbInformation,Title

'Done
WScript.Quit(0)
0 голосов
/ 27 сентября 2019

Понял, хотя я уверен, что был бы более эффективный способ:

@ECHO Off
SET PC_NAME=BillyPC
SET TEMP_FILE=C:\temp\temp.txt
SystemInfo /s %PC_NAME% | FIND "Boot Time:" > %TEMP_FILE%
SET /p BOOT_TIME=<%TEMP_FILE%
SET BOOT_TIME=%BOOT_TIME:~27%
ECHO %BOOT_TIME%
PAUSE

Приветствия

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...