Witamy na forum PC Format Zapraszamy do REJESTRACJI


Użytkownicy przeglądający ten wątek: 1 gości

Systeminfo.exe - wyświetlanie informacji w Batchu

#1
Systeminfo.exe - wyświetlanie informacji w Batchu
Witam,
Napisałem skrypt batch wyświetlający informacje o systemie.
Wygląda tak:
Kod:
@echo off
chcp 852
color 0a
systeminfo | find "Nazwa systemu operacyjnego"
systeminfo | find "Wersja systemu operacyjnego"
systeminfo | find "Data oryginalnej instalacji"
systeminfo | find "Czas rozruchu systemu"
systeminfo | find "Katalog systemowy"
systeminfo | find "[02]"
echo Naciśnij dowolny klawisz aby zakończyć działanie programu.
pause > nul
Działa w miarę poprawnie, ale jest problem: komenda wyszukania find "02" wyszukuje wszystkie dane poprzedzone tymi cyframi. Jak poprawić tą linijkę tak, żeby wyświetlała tylko drugą kartę sieciową, a nie kartę, drugi adres IP i drugą poprawkę?
Jeszcze jedno: jak usprawnić działanie skryptu? Każda linijka z komendą szukania danej jest przetwarzana ok. 10 sekund, a więc wykonanie całego skryptu zajmuje ok. 1 minuty.
Z góry dzięki za pomoc.
 System operacyjny: windows_seven Przeglądarka: chrome
#2
RE: Systeminfo.exe - wyświetlanie informacji w Batchu
Zakładając że chodzi o kartę (a nie połączenie typu VPN, TeamViewer itp.) + polską wersję systemu:

Kod:
@echo off
rem chcp 852
color 0a
systeminfo | find "Nazwa systemu operacyjnego"
systeminfo | find "Wersja systemu operacyjnego"
systeminfo | find "Data oryginalnej instalacji"
systeminfo | find "Czas rozruchu systemu"
systeminfo | find "Katalog systemowy"
echo.
echo Karty sieciowe:
systeminfo | find "Kontroler"
echo.
echo Naciśnij dowolny klawisz aby zakończyć działanie programu.
pause > nul

Może być? (przy okazji wytłumacz po co ci to potrzebne).

Wszystkie (teoretycznie) możliwe połączenia:
Kod:
wmic nic get name, index


Cytat:jak usprawnić działanie skryptu

To nie jest skrypt tylko plik przetwarzania wsadowego - każda linia powoduje:
1. odpalenie programu - a program "na dzieńdobry" prześwietla cały komputer
2. przeszukanie zawartości pod kątem zadanego parametru
3. wyświetlenie komunikatu
4. zamknięcie programu
>> dlatego tyle to trwa. Sugeruję skorzystać z PowerShell albo Visual Basic - tu faktycznie trzeba napisać skrypt - przykładowy (1-szy z brzegu z sieci) poniżej (oczywiście sięgamy po WMI).

Do Notatnika wklej (bez frazy "Kod:"):
Kod:
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set oss = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")

For Each os in oss
    Wscript.Echo "Boot Device: " & os.BootDevice
    Wscript.Echo "Build Number: " & os.BuildNumber
    Wscript.Echo "Build Type: " & os.BuildType
    Wscript.Echo "Caption: " & os.Caption
    Wscript.Echo "Code Set: " & os.CodeSet
    Wscript.Echo "Country Code: " & os.CountryCode
    Wscript.Echo "Debug: " & os.Debug
    Wscript.Echo "Encryption Level: " & os.EncryptionLevel
    dtmConvertedDate.Value = os.InstallDate
    dtmInstallDate = dtmConvertedDate.GetVarDate
    Wscript.Echo "Install Date: " & dtmInstallDate
    Wscript.Echo "Licensed Users: " & os.NumberOfLicensedUsers
    Wscript.Echo "Organization: " & os.Organization
    Wscript.Echo "OS Language: " & os.OSLanguage
    Wscript.Echo "OS Product Suite: " & os.OSProductSuite
    Wscript.Echo "OS Type: " & os.OSType
    Wscript.Echo "Primary: " & os.Primary
    Wscript.Echo "Registered User: " & os.RegisteredUser
    Wscript.Echo "Serial Number: " & os.SerialNumber
    Wscript.Echo "Version: " & os.Version
Next

Plik > zapisz jako: jakaś_nazwa.vbs > Typ: Wszystkie pliki (zaznaczam żebyś nie spłodził potworka typu nazwa.vbs.txt). Uruchom przez 2-klik. Pewnie cię zirytuje konieczność klikania - możesz "połamać" tekst przez vbCRLF jak poniżej (to akurat mój skrypt) :

Kod:
strComputer = "."

Set objWMIService = GetObject("winmgmts:" & "{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")

Set colPageFiles = objWMIService.ExecQuery("Select * from Win32_PageFileUsage")

For Each objPageFile in colPageFiles

Wscript.Echo "Szczegóły pliku wymiany danych:" & vbCRLF & vbCRLF &_
"Lokalizacja: " & objPageFile.Name & vbCRLF &_
"Rozmiar początkowy: " & objPageFile.AllocatedBaseSize & vbCRLF &_
"Aktualne wykorzystanie: " & objPageFile.CurrentUsage & vbCRLF &_
"Najwyższe wykorzystanie: " & objPageFile.PeakUsage & vbCRLF & vbCRLF & "(c)Broda, 2007"

Next
Nie pomagam na PW (ew. odpłatnie). 
I osobom z roszczeniowym podejściem. I osobom niedbającym o poprawność językową.
Jak podawać logi
Jeśli nie odpowiadam w danym wątku przez >3 dni - proszę o przypomnienie na PW z linkiem do wątku w treści.




 System operacyjny: windows_seven Przeglądarka: firefox
#3
RE: Systeminfo.exe - wyświetlanie informacji w Batchu
Kod:
@echo off
rem chcp 852
color 0a
systeminfo | find "Nazwa systemu operacyjnego"
systeminfo | find "Wersja systemu operacyjnego"
systeminfo | find "Data oryginalnej instalacji"
systeminfo | find "Czas rozruchu systemu"
systeminfo | find "Katalog systemowy"
echo.
echo Karty sieciowe:
systeminfo | find "Kontroler"
echo.
echo Naciśnij dowolny klawisz aby zakończyć działanie programu.
pause > nul
Niestety wyszukiwanie kart sieciowych nie działa.
Po prostu nudziło mi się i napisałem sobie takiego batcha.

Kod:
Set dtmConvertedDate = CreateObject("WbemScripting.SWbemDateTime")
strComputer = "."
Set objWMIService = GetObject("winmgmts:{impersonationLevel=impersonate}!\\" & strComputer & "\root\cimv2")
Set oss = objWMIService.ExecQuery ("Select * from Win32_OperatingSystem")

For Each os in oss
   Wscript.Echo "Boot Device: " & os.BootDevice
   Wscript.Echo "Build Number: " & os.BuildNumber
   Wscript.Echo "Build Type: " & os.BuildType
   Wscript.Echo "Caption: " & os.Caption
   Wscript.Echo "Code Set: " & os.CodeSet
   Wscript.Echo "Country Code: " & os.CountryCode
   Wscript.Echo "Debug: " & os.Debug
   Wscript.Echo "Encryption Level: " & os.EncryptionLevel
   dtmConvertedDate.Value = os.InstallDate
   dtmInstallDate = dtmConvertedDate.GetVarDate
   Wscript.Echo "Install Date: " & dtmInstallDate
   Wscript.Echo "Licensed Users: " & os.NumberOfLicensedUsers
   Wscript.Echo "Organization: " & os.Organization
   Wscript.Echo "OS Language: " & os.OSLanguage
   Wscript.Echo "OS Product Suite: " & os.OSProductSuite
   Wscript.Echo "OS Type: " & os.OSType
   Wscript.Echo "Primary: " & os.Primary
   Wscript.Echo "Registered User: " & os.RegisteredUser
   Wscript.Echo "Serial Number: " & os.SerialNumber
   Wscript.Echo "Version: " & os.Version
Next
Wolałbym jednak wyświetlanie informacji w wierszu poleceń (o ile to możliwe).


Cytat:(zaznaczam żebyś nie spłodził potworka typu nazwa.vbs.txt)
No bez przesady, przecież to każdy chyba wie (Win 7 nawet nie pozwala na takie "potwory")


Cytat:Uruchom przez 2-klik.
Ekhm...

Ogólnie dzięki za pomoc.
PS Korzystam z Windowsa 7.
 System operacyjny: windows_seven Przeglądarka: chrome
Programy: Polecane / Nowe / Inne




Podobne wątki (Systeminfo.exe - wyświetlanie informacji w Batchu)
Wątek: Autor Odpowiedzi: Wyświetleń: Ostatni post
  Wyświetlanie informacji z bazy danych na stronie www PitPlay 1 18093 16.09.2019, 11:18
Ostatni post: Ajgor
  [C] problem z kodem "wyświetlanie gwiazdek" mdb 2 10591 29.10.2016, 20:14
Ostatni post: mdb
  Problem z wywołaniem folderu w batchu Ksionszek 3 9871 27.08.2016, 16:30
Ostatni post: Ajgor

Skocz do: