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
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
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
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.
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
3 Kommentare
Neuester Kommentar
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,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.
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%"