bracki
Goto Top

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.

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

Content-ID: 136837

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

Ausgedruckt am: 26.11.2024 um 08:11 Uhr

60730
60730 25.02.2010 um 13:14:06 Uhr
Goto Top
Moin,

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)

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.
Bracki
Bracki 25.02.2010 um 13:24:51 Uhr
Goto Top
Hi TimoBeil

Danke für Deine Antwort.

Natürlich sind die "Erzeuger" mit Administrativen Rechten ausgestattet und es geht ja auch nicht darum was das Bios erkennt und wie die Datei "Speicher.txt" erstellt wurde. Es geht einfach nur darum wie ich die Datei "Speicher.txt" auswerte und diese Infos in die neue Datei "NW_Speicher.txt" speichere. Ich bräuchte eigentlich nur diesen Verfahrensweg.
TsukiSan
TsukiSan 25.02.2010 um 14:11:30 Uhr
Goto Top
Hi Bracki,

was Timo meint ist, dass es sich mit anderen Mitteln einfacher lösen läßt.
Hier nur mal ein kurzes Beispiel mit VBS und das Auslesen von der Info
Max bandwidth
' NO CODE REQUIRED IN VBS  

Vielleicht bekommst du jetzt ja Lust, es in einer anderen Version auszulesen.

Gruss
Tsuki
Bracki
Bracki 25.02.2010 um 14:17:37 Uhr
Goto Top
Hi Tsuki

Danke für Deine Antwort aber die hilft mir leider auch nicht weiter.

Wie ich es schon in meiner "Einleitung" erwähnt habe ist es speziell so gewollt das Ganze als Batch laufen zu lassen.

MfG
Bracki
TsukiSan
TsukiSan 25.02.2010 um 14:24:44 Uhr
Goto Top
Mh, dann warten wir mal auf bibers, rubbermans oder bastlas hilfe.
das sind die besseren "bätcher".

Gruss
Tsuki
60730
60730 25.02.2010 um 14:25:13 Uhr
Goto Top
Moin,

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.
TsukiSan
TsukiSan 25.02.2010 um 14:28:15 Uhr
Goto Top
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
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 face-wink

Viele Grüße
Tsuki
TsukiSan
TsukiSan 25.02.2010 um 14:38:26 Uhr
Goto Top
Also gut,

hier die Batch-Variante (über VBS)
::Auf Wunsch des TOs ist der Code entfernt

den Rest, Bracki, schaffst 'e alleine face-wink

Gruss
Tsuki

[Edit]
.... Danke Tsuki für Deine Bemühungen, aber bitte kein VBS. face-wink
also gut, dein Wunsch ist mir Befehl face-wink
[/Edit]
Bracki
Bracki 25.02.2010 um 14:39:36 Uhr
Goto Top
Mhh!? Timo, Du bist über Deinen eigenen Schatten gesprungen? ---> Spaß

Ich bin mir echt im klaren das es bessere Möglichkeiten und Varianten gibt diese Aufgabe zu bewältigen aber möchte doch an der Varianten mittels Batchprogrammierung festhalten.

MfG

Bracki


Danke Tsuki für Deine Bemühungen, aber bitte kein VBS. face-wink
TsukiSan
TsukiSan 25.02.2010 um 14:54:17 Uhr
Goto Top
Rufe hiermit meine Antworten zurück.

Gruss
Tsuki
Schwinni79
Schwinni79 25.02.2010 um 15:07:34 Uhr
Goto Top
Hallo Bracki,

ich kann ebenfalls keine Lösung in einer Batchdatei anbieten ... ich habe den Beitrag verfolgt und ich bin in dessen Verlauf immer neugieriger geworden.

Gestatte mir die Frage, warum es keine Alternative zu einer Batchdatei geben darf...

Gruß

Michael
bastla
bastla 25.02.2010 um 20:46:01 Uhr
Goto Top
... der Frage von Schwinni79 schließe ich mich an ...

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
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 face-wink) herauskommen ... [/Edit]
Biber
Biber 25.02.2010 um 21:17:29 Uhr
Goto Top
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:

  • 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.
Mit Blöcken, Sections, logisch gegliederten Hierarchien geht es nur bedingt elegant....nein, warte.

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! face-wink
[/Edit]
Bracki
Bracki 26.02.2010 um 09:45:03 Uhr
Goto Top
Hallo Bastla

Ich möchte Dir vielmals für Deinen konstruktiven Beitrag danken, Du hast mir sehr weitergeholfen. Großes Lob!!!

@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.

MfG

Bracki


uuuuuups ... falsche Positon.
bastla
bastla 26.02.2010 um 09:52:30 Uhr
Goto Top
Hallo Bracki!
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
Biber
Biber 26.02.2010 um 10:04:17 Uhr
Goto Top
Moin Bracki,


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.
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