Per Batch Daten auslesen, verarbeiten und speichern
Hallo
Ich habe ein riesen Problem und ich hoffe das ihr mir vlt. dabei helfen könntet dieses zu lösen.
Mir stellt sich eine Aufgabe welche man sicherlich sehr gut unter VBA lösen könnte aber gewollt mit einer Batchdatei ausgeführt werden soll.
Aufgabe soll es sein, alle Firmenrechner zu "scannen" um herauszufinden welche Speicheriegel mit welcher Kapazität und Taktung verbaut wurden.
Das mit dem "Scannen" klappt ja soweit ganz gut und die Sannergebnisse werden auf jeden Rechner lokal unter:
c:\windows\system32\speicher.txt
abgelegt.
Aus der Datei Speicher.txt sollen nun die Werte für die Speicherriegel extrahiert werden (+Rechnername) und in einer Textdatei fortlaufend (also von allen Rechnern) auf einem Netzlaufwerk gespeichert werden.
z.B. u:\NW_Speicher.txt
Der mich interessierende Inhalt der Datei Speicher.txt sieht folgendermaßen aus und befindet sich mitten darin.
In die Datei "NW_Speicher.txt" sollten nun die Daten wie folgenden Übertragen und gespeichert werden:
Rechnername; DIMM1; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM2; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM3; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM4; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Die Anzahl der Steckplätze kann natürlich variieren.
Ich stelle mir das so vor, dass die Batchdatei auf einem Server liegt und zentral durch ein Logonscript aktiviert oder deaktiviert werden könnte.
Weiterhin müsste bestimmt die Datei "NW_Speicher.txt" auf vorhandene Einträge geprüft werden und ggf. diese Ersetzt werden (z.B. nach Speicheraufrüstung).
So, ich hoffe ich habe mich verständlich ausgedrückt und das ihr mir helfen könnt.
Vielen Dank
Bracki
Ich habe ein riesen Problem und ich hoffe das ihr mir vlt. dabei helfen könntet dieses zu lösen.
Mir stellt sich eine Aufgabe welche man sicherlich sehr gut unter VBA lösen könnte aber gewollt mit einer Batchdatei ausgeführt werden soll.
Aufgabe soll es sein, alle Firmenrechner zu "scannen" um herauszufinden welche Speicheriegel mit welcher Kapazität und Taktung verbaut wurden.
Das mit dem "Scannen" klappt ja soweit ganz gut und die Sannergebnisse werden auf jeden Rechner lokal unter:
c:\windows\system32\speicher.txt
abgelegt.
Aus der Datei Speicher.txt sollen nun die Werte für die Speicherriegel extrahiert werden (+Rechnername) und in einer Textdatei fortlaufend (also von allen Rechnern) auf einem Netzlaufwerk gespeichert werden.
z.B. u:\NW_Speicher.txt
Der mich interessierende Inhalt der Datei Speicher.txt sieht folgendermaßen aus und befindet sich mitten darin.
DIMM # 1
SMBus address 0x50
Memory type DDR2
Module format Regular UDIMM
Manufacturer (ID) Kingston (7F98000000000000)
Size 1024 MBytes
Max bandwidth PC2-6400 (400 MHz)
Part number
Serial number 7FCC3ED6
Manufacturing date Week 28/Year 09
Number of banks 1
Data width 64 bits
Correction None
Nominal Voltage 1.80 Volts
EPP no
XMP no
JEDEC timings table CL-tRCD-tRP-tRAS-tRC @ frequency
JEDEC #1 4.0-4-4-12-16 @ 266 MHz
JEDEC #2 5.0-5-5-15-20 @ 333 MHz
JEDEC #3 6.0-6-6-18-24 @ 400 MHz
DIMM # 2
SMBus address 0x51
Memory type DDR2
Module format Regular UDIMM
Manufacturer (ID) Kingston (7F98000000000000)
Size 1024 MBytes
In die Datei "NW_Speicher.txt" sollten nun die Daten wie folgenden Übertragen und gespeichert werden:
Rechnername; DIMM1; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM2; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM3; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM4; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Die Anzahl der Steckplätze kann natürlich variieren.
Ich stelle mir das so vor, dass die Batchdatei auf einem Server liegt und zentral durch ein Logonscript aktiviert oder deaktiviert werden könnte.
Weiterhin müsste bestimmt die Datei "NW_Speicher.txt" auf vorhandene Einträge geprüft werden und ggf. diese Ersetzt werden (z.B. nach Speicheraufrüstung).
So, ich hoffe ich habe mich verständlich ausgedrückt und das ihr mir helfen könnt.
Vielen Dank
Bracki
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 136837
Url: https://administrator.de/contentid/136837
Ausgedruckt am: 26.11.2024 um 08:11 Uhr
16 Kommentare
Neuester Kommentar
Moin,
schliesst doch schon mal daraufhin - dass die "Erzeuger" Admnistratoren" sind.
ist dann doch auch wieder nix halbes und nix ganzes...
und da du uns auch nicht daran teilhaben läßt, wie denn die speicher.txt erzeugt wurde und da der Rechner nur das kennt, was er (das Bios) erkennt - und nicht unbedingt das, was tatsächlich drin ist...
Würde ich das mit einem anderen Mittel/Weg und Werkzeug auslesen.
Mit Batch geht zwar vieles, aber in dem Fall gäbe es elegantere Lösungen.
c:\windows\system32\speicher.txt
schliesst doch schon mal daraufhin - dass die "Erzeuger" Admnistratoren" sind.
Rechnername; DIMM1; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM2; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM3; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM4; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM2; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM3; DDR2; 1024 MBytes; PC2-6400(400 MHz)
Rechnername; DIMM4; DDR2; 1024 MBytes; PC2-6400(400 MHz)
ist dann doch auch wieder nix halbes und nix ganzes...
und da du uns auch nicht daran teilhaben läßt, wie denn die speicher.txt erzeugt wurde und da der Rechner nur das kennt, was er (das Bios) erkennt - und nicht unbedingt das, was tatsächlich drin ist...
Würde ich das mit einem anderen Mittel/Weg und Werkzeug auslesen.
Mit Batch geht zwar vieles, aber in dem Fall gäbe es elegantere Lösungen.
Moin,
vielleicht ist es in meinen wenigen zeilen nicht ganz klar geworden....
Und der allerletzte Seitenhieb sei gestattet, wenn ich etwas unbedingt auf einem / über einen Weg lösen will, dann finde ich auch alleine die Lösung, die ich suche. Wenn ich dazu andere fragen muß und die sagen, ein anderer Weg wäre sinnvoller, dann würde ich annehmen, die Wissen was Sie schreiben.
Aber ich hab ja eh keine Ahnung
Und dass man Tsukis Ansatz auch in und von einer Batch automatisch schreiben lassen könnte und den Aufruf der vbs in einer batch stehen könnte, verrate ich auch nicht.
vielleicht ist es in meinen wenigen zeilen nicht ganz klar geworden....
- natürlich helfen wir hier gerne
- natürlich sollte die Lösung dann keine Holzweg/Trampelpfad mit Einbahnstrasse sein
- eventuell sollte die Mühe, die man sich beim lösen macht nicht nur einem dienen, sondern allen/mehreren.
Und der allerletzte Seitenhieb sei gestattet, wenn ich etwas unbedingt auf einem / über einen Weg lösen will, dann finde ich auch alleine die Lösung, die ich suche. Wenn ich dazu andere fragen muß und die sagen, ein anderer Weg wäre sinnvoller, dann würde ich annehmen, die Wissen was Sie schreiben.
Aber ich hab ja eh keine Ahnung
Und dass man Tsukis Ansatz auch in und von einer Batch automatisch schreiben lassen könnte und den Aufruf der vbs in einer batch stehen könnte, verrate ich auch nicht.
Moin Timo,
den Umweg in der Batch über VBS wollte ich nicht erwähnen, weils ja dann auch nur rumgerührte "Ka**e" ist.
Aber danke dafür, dass du schreibst
Ich trage mir ein Bienchen ein
Viele Grüße
Tsuki
den Umweg in der Batch über VBS wollte ich nicht erwähnen, weils ja dann auch nur rumgerührte "Ka**e" ist.
Aber danke dafür, dass du schreibst
Wenn ich dazu andere fragen muß und die sagen, ein anderer Weg wäre sinnvoller, dann würde ich annehmen, die Wissen > was Sie schreiben.
Ich trage mir ein Bienchen ein
Viele Grüße
Tsuki
... der Frage von Schwinni79 schließe ich mich an ...
Ansonsten - versuch es mal damit:
Ein Unsicherheitsfaktor ist das Ersetzen der Einträge des verarbeitenden Rechners in der "NW_Speicher.txt" (falls 2 Rechner gleichzeitig darauf zugreifen) ...
Bitte beachten: In der Zeile 9 (nach dem zweiten "%%i") sowie nach den "delims=" der Zeilen 19 bis 21 sowie 26 befindet sich jeweils ein TAB.
Grüße
bastla
[Edit] @Biber: Bei mir würde aber wohl nur Marmorkuchen (Achtung: Fastenzeit ) herauskommen ... [/Edit]
Ansonsten - versuch es mal damit:
@echo off & setlocal
set "SpL=c:\windows\system32\Speicher.txt"
set "SpR=u:\NW_Speicher.txt"
set "SpT=%temp%\Speicherinfo.txt
del "%SpT%" 2>nul
set "D="
for /f "usebackq delims=" %%i in ("%SpL%") do call :ProcessLine "%%i "
if defined D >>"%SpT%" echo %D%
if exist "%SpR%" findstr /v /b "%computername%;" "%SpR%">>"%SpT%"
copy "%SpT%" "%SpR%"
goto :eof
:ProcessLine
echo %~1|findstr /b /c:"DIMM #">nul && goto :DIMM
if not defined D goto :eof
for /f "tokens=3 delims= " %%a in ('echo %1^|findstr /c:"Memory type"') do set "D=%D%;%%a"
for /f "tokens=3 delims= " %%a in ('echo %1^|findstr /c:"Size"') do set "D=%D%;%%a"
for /f "tokens=3 delims= " %%a in ('echo %1^|findstr /c:"Max bandwidth"') do set "D=%D%;%%a"
goto :eof
:DIMM
if defined D >>"%SpT%" echo %D%
for /f "tokens=2 delims= " %%a in (%1) do set "D=%computername%;DIMM%%a"
goto :eof
Bitte beachten: In der Zeile 9 (nach dem zweiten "%%i") sowie nach den "delims=" der Zeilen 19 bis 21 sowie 26 befindet sich jeweils ein TAB.
Grüße
bastla
[Edit] @Biber: Bei mir würde aber wohl nur Marmorkuchen (Achtung: Fastenzeit ) herauskommen ... [/Edit]
Moin Bracki,
natürlich ist das mit nativem, reinem Batch lösbar.
Aber weder sinnvoll noch mit vertretbarem Aufwand.
Die einzigen beiden Begründungen für ein derartiges Ansinnen, die ich gelten lassen würde, wären:
(CMD-) Batch ist ist diesem Fall ein ungeeignetes Werkzeug, weil
ich versuchs anders.
Ich weiß nicht, ob du schon mal in Rom in den Vatikanischen Museen warst.
Falls ja, hast du bestimmt die Laokoongruppe bewundert.
Der Legende nach ist diese Marmorausführung dieser Skulptur auch ähnlich entstanden - einem Praktikanten wurde ein Marmorklotz im Format 3m x 3m x 2,34m auf den Hof gekarrt, zwei Häkelnadeln dazugelegt und die Vorgabe, einfach alle nicht zu Papa & Sohnemätzen gehörigen Teile wegzukratzen.
Und dieser Praktikant hat es auch irgendwann geschafft!
Allerdings war dessen Stundenlohn spürbar geringer als der eines Leih-Bätchers hier aus dem Forum.
Genauer gesagt: bastla mal ausgenommen.
Was du als allererstes machen solltest ist die Prüfung, ob dieses Progrämmchen, dass so wunderbare "menschenlesbare" Reports zum Abheften erstellt, nicht vielleicht auch eine Ausgabe im CSV oder XML oder TABLE oder irgendeinem "programmlesbaren" Format erzeugen kann.
Ich gehe eigentlich davon aus...
--> wenn nicht:-> dann wäre die Konsequenz: "Hey, dieses Programm, das diesen output erzeugt ist für uns ungeeignet, da Output nicht automatisiert verarbeitbar. Praktikant, bitte suchmaschine mal nach Alternativen."
Wie gesagt, es lässt sich mit Batch machen, aber wer von Euch wollte das bezahlen? Ihr wollt doch wohl nicht mehr für einen Batchschnipsel ausgeben als das Vorsingen dieser ganzen Liste durch Lady Gaga (der echten, ich meine nicht Guido Westerwelle) kosten würde.
Grüße
Biber
[Edit] @bastla
Dir stell ich auch irgendwann so einen Marmorklotz auf den Hof!
[/Edit]
natürlich ist das mit nativem, reinem Batch lösbar.
Aber weder sinnvoll noch mit vertretbarem Aufwand.
Die einzigen beiden Begründungen für ein derartiges Ansinnen, die ich gelten lassen würde, wären:
- du hast mit deinem Cheffe um einen Sixpack gewettet
- oder ein Praktikant, der andernfalls höchstens einen Beitrag zur globalen Erderwärmung leisten würde, soll eine Zeitlang vor seinem Monitor verbringen
(CMD-) Batch ist ist diesem Fall ein ungeeignetes Werkzeug, weil
- eine Datei streng zeilenorientiert abgearbeitet wird
- was wiederum nur dann stressarm geht, wenn alle (relevanten) Zeilen nach einem Muster (und nicht 22 verschiedenen) aufgebaut sind.
ich versuchs anders.
Ich weiß nicht, ob du schon mal in Rom in den Vatikanischen Museen warst.
Falls ja, hast du bestimmt die Laokoongruppe bewundert.
Der Legende nach ist diese Marmorausführung dieser Skulptur auch ähnlich entstanden - einem Praktikanten wurde ein Marmorklotz im Format 3m x 3m x 2,34m auf den Hof gekarrt, zwei Häkelnadeln dazugelegt und die Vorgabe, einfach alle nicht zu Papa & Sohnemätzen gehörigen Teile wegzukratzen.
Und dieser Praktikant hat es auch irgendwann geschafft!
Allerdings war dessen Stundenlohn spürbar geringer als der eines Leih-Bätchers hier aus dem Forum.
Genauer gesagt: bastla mal ausgenommen.
Was du als allererstes machen solltest ist die Prüfung, ob dieses Progrämmchen, dass so wunderbare "menschenlesbare" Reports zum Abheften erstellt, nicht vielleicht auch eine Ausgabe im CSV oder XML oder TABLE oder irgendeinem "programmlesbaren" Format erzeugen kann.
Ich gehe eigentlich davon aus...
--> wenn nicht:-> dann wäre die Konsequenz: "Hey, dieses Programm, das diesen output erzeugt ist für uns ungeeignet, da Output nicht automatisiert verarbeitbar. Praktikant, bitte suchmaschine mal nach Alternativen."
Wie gesagt, es lässt sich mit Batch machen, aber wer von Euch wollte das bezahlen? Ihr wollt doch wohl nicht mehr für einen Batchschnipsel ausgeben als das Vorsingen dieser ganzen Liste durch Lady Gaga (der echten, ich meine nicht Guido Westerwelle) kosten würde.
Grüße
Biber
[Edit] @bastla
Dir stell ich auch irgendwann so einen Marmorklotz auf den Hof!
[/Edit]
Hallo Bracki!
Grüße
bastla
Es geht nicht immer nur um das wieso, weshalb und warum man etwas machen möchte ...
Wenn es auch nicht nur um diese Frage geht, wäre ich aber trotzdem an einer Begründung, warum das für diesen Zweck besser geeignete Werkzeug (VBS) so kategorisch ausgeschlossen wird, interessiert ...Grüße
bastla
Moin Bracki,
Dass du eben eben vielleicht noch nicht über Jahrzehnte in einem Betrieb/Unternehmen miterleben musstest, wie oft und wie viel Geld verbrannt wird mit "Programmierlösungen" von wohlmeinenden Laien und Amateuren, die sich monatelang mit den weiter oben genannten Häkelnadeln und einem Marmorklotz eingeschlossen haben.
Wie dem auch sei - der erste Gedanke, den ich beim Lesen deines zitierten Satzes hatte war:
"Ich habe schon Beiträge aus geringeren Anlässen geschreddert."
Wenn es nur um die wortwörtliche Beantwortung einer Frage mit Tunnelblick und "Nachfragen verboten" geht, dann wären Suchmaschinen oder ein "SMS-Guru"-Service doch sinnvoller als ein Forum wie "administrator.de", oder?
Grüße
Biber
Zitat von @Bracki:
@alle Anderen
Es geht nicht immer nur um das wieso, weshalb und warum man etwas machen möchte,
sondern nur um eine einfache Antwort auf eine gestellte Frage.
ich halte dir natürlich zugute, dass du relativ neu hier im Forum bist und vielleicht auch noch nicht so lange im IT-Arbeitsleben stehst.@alle Anderen
Es geht nicht immer nur um das wieso, weshalb und warum man etwas machen möchte,
sondern nur um eine einfache Antwort auf eine gestellte Frage.
Dass du eben eben vielleicht noch nicht über Jahrzehnte in einem Betrieb/Unternehmen miterleben musstest, wie oft und wie viel Geld verbrannt wird mit "Programmierlösungen" von wohlmeinenden Laien und Amateuren, die sich monatelang mit den weiter oben genannten Häkelnadeln und einem Marmorklotz eingeschlossen haben.
Wie dem auch sei - der erste Gedanke, den ich beim Lesen deines zitierten Satzes hatte war:
"Ich habe schon Beiträge aus geringeren Anlässen geschreddert."
Wenn es nur um die wortwörtliche Beantwortung einer Frage mit Tunnelblick und "Nachfragen verboten" geht, dann wären Suchmaschinen oder ein "SMS-Guru"-Service doch sinnvoller als ein Forum wie "administrator.de", oder?
Grüße
Biber