plaan3r
Goto Top

Rechnerinformationen auslesen mit CPUZ per Batch

Da mir die Informationen von MS-Systeminfo nicht genau genug waren, da ich für unser Lizensmodell mal eine spezifische Auflistung brauchte was in unseren Servern vorhanden ist habe ich mal ein kleines Batch geschrieben.... und es mal etwas Kommentiert, vielleicht hilft es den ein oder anderen mal. Über Verbesserungsvorschläge würde ich mich natürlich freuen.

mfg plaan3r
@echo off
color f0
mode con: Cols=57 Lines=13
title Prozessorinformation
echo #########################################################
echo #                                                       #
echo #       Computerinformationen werden ausgelesen         #
echo #                                                       #
echo #########################################################

rem #########################################################
rem #			                                    #
rem #             Parameter Festlegen                       #
rem #             Pfad,Name,Laufwerk                        #
rem #########################################################






rem ### laufwerksbuchstabe festlegen in diesem Fall r: ###

set lf=r:

rem ### Speicherpfad -- BITTE ÄNDERN ###

set pfad=++\\pfad\ordner

rem ### Falls Laufwerk schon existiert wird es getrennt, um Fehler zu vermeiden ###

if exist %lf% net use r: /delete /YES

rem ### Laufwerk wird verbunden ###

net use %lf% %pfad%

rem  ### Name der CSV wird festgelegt -- ggf. ändern--- Extension ".csv" nicht vergessen ###  

set name=insgesamtserverinfo.csv


rem ### cpuz.exe kann auch in einemn anderen Ordner liegen bsp. buchstabe:\cpuz.exe, sonst muss es  im Batchpfad vorhanden sein. ###
rem --- CPUZ liegt im vorher verbundenen Laufwerk und wird jetzt angesprochen --> es erstellt eine TXT die den Namen des Computers trägt. Diese Datei wird im nachfolgenden verarbeiten und dann auch wieder gelöscht. ---
buchstabe:\cpuz.exe -txt=%Computername% & GOTO proz

rem #########################################################
rem #          Informationen von CPUZ werden verarbeitet    #
rem #########################################################

rem ### Physische CPU Anzahl und Kerne werden ausgelesen ###

:proz
for /F "skip=6 tokens=4*" %%i in (%Computername%.txt) do for /f "tokens=4*" %%j in ('findstr /c:"Number of cores" %Computername%.txt') do (  
set "i=%%i"   
set "j=%%j"   
 goto names
)

rem ### Name des CPU wird ausgelesen ###

:names
for /f "tokens=2-25*" %%a in ('findstr /c:"Name" %Computername%.txt') do (  

set "a=%%a"   
set "b=%%b"   
set "c=%%c"  
set "d=%%d"  
set "e=%%e"  
 GOTO codename

)
rem ### Codename des CPU wird ausgelesen ###

:codename
for /f "tokens=2-25*" %%n in ('findstr /c:"Codename" %Computername%.txt') do (  

set "n=%%n"  
 GOTO Specification

)

rem ### detailierte CPU Spezifikation wird ausgelesen###

:Specification
for /f "tokens=2-25*" %%p in ('findstr /c:"Specification" %Computername%.txt') do (  

set "p=%%p"  
set "q=%%q"  
set "r=%%r"  
set "s=%%s"  
set "t=%%t"  
set "u=%%u"  
set "v=%%v"  
set "w=%%w"  

 GOTO uebs
)

rem ### Falls noch nicht vorhanden, wird die CSV-Datei mit ihren Headern erzeugt ###

:uebs
if not exist %lf%%name% echo hostname;cpu_anz;core_anz;name;codename;cpu>%lf%%name%
Goto speichern

rem ### Ausgelesene Daten werden in die CSV gespeichert ###

:speichern
echo %Computername%;%i%;%j%;%a% %b% %c% %d% %e%;%n%;%p% %q% %r% %s% %t% %u% %v% %w% >>%lf%%name%
)

rem ### Die von CPUZ erstellte Datei wird gelöscht ###

del %Computername%.txt
GOTO exit

rem ### Netzlaufwerk wird getrennt, Batch wird beendet ###

:exit
net use %lf% /delete /YES
exit
Kommentar vom Moderator Biber am 07.08.2009 um 01:52:53 Uhr
Hmm... ich habe mal aus diesem "Allgemeinen Beitrag" unter "Windows" eine "Frage" in "Batch & Shell" gemacht.
Die Bitte des Lords, das Batch-Fragment in Code-Tags zu setzen unterstütze ich voll und ganz und ebenso den dezenten Hinweis, dass der Beitragsersteller dieses auch nachträglich mit "Editieren" des Beitrags erreichen kann.

Content-ID: 122026

Url: https://administrator.de/contentid/122026

Ausgedruckt am: 22.11.2024 um 17:11 Uhr

Pjordorf
Pjordorf 05.08.2009, aktualisiert am 18.10.2012 um 18:38:56 Uhr
Goto Top
Hallo,

warum hast du nicht BGInfo genommen? Es gibt hier im Forum ein schönes Howto dazu.

Peter

[edit]

Noch schnell gesucht und gefunden.


[edit]
plaan3r
plaan3r 05.08.2009 um 13:34:13 Uhr
Goto Top
Ich weiß nicht genau wie BGInfo funktioniert und was es alles anzeigt^^ aber man müsste es bestimmt lokal installieren oder? Bei CPUZ ist das nicht der Fall, das ist nur ne exe die man überall raus starten kann.

mfg
77559
77559 06.08.2009 um 10:35:04 Uhr
Goto Top
Zitat von @plaan3r:
Da mir die Informationen von MS-Systeminfo nicht genau genug waren, da
ich für unser Lizensmodell mal eine spezifische Auflistung
brauchte was in unseren Servern vorhanden ist habe ich mal ein kleines
Batch geschrieben.... und es mal etwas Kommentiert, vielleicht hilft
es den ein oder anderen mal. Über Verbesserungsvorschläge
würde ich mich natürlich freuen.

Hallo plaan3r,

ich würde die Batchdatei in code tags einfasssen (geht auch nachträglich) Ist dann einfach besser lesbar.
Ich habe in meiner Version
  • das Mapping weggelassen (dafür reicht ja auch ein Pushd \\Server\Freigabe) und nutze das aktuelle Verz.
  • zusätzlich Number of threads aufgenommen.
  • die For Schleifen mit den Tokens etwas zusammengefasst.
  • eine Abprüfung ob der aktuelle Computer schon enthalten ist eingefügt.
  • die cpuz Auswertung nicht gelöscht.

Gruß
LotPings

@echo off
Setlocal
set LogFile=%~dp0insgesamtserverinfo.csv
findstr /i "%computername%" %LogFile% && (echo Schon vorh.! & Exit /b 1)  

cpuz.exe -txt=%Computername%

for /F "tokens=3,4" %%A in (  
  'findstr "of.processors of.cores of.threads" %Computername%.txt'  
) do Set _%%A=%%B

for /F "tokens=1*" %%A in (  
  'findstr "Name Codename Specification" %Computername%.txt'  
) do Call :Sub %%A %%B

if not exist %LogFile% echo hostname;cpu_anz;core_anz;thread_anz;name;codename;cpu >%LogFile%
echo %Computername%;%_processors%;%_cores%;%_threads%;%_Name%;%_Codename%;%_Specification% >>%LogFile%
Goto :Eof

:Sub
Set "Line=%*"  
Call Set Line=%%Line:%1 =%%
:Loop
if "%Line%" NEQ "%Line:  = %" Set "Line=%Line:  = %"&Goto :Loop  
Set "_%1=%Line%"