Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Per Batch Daten auslesen, verarbeiten und speichern

Frage Entwicklung Batch & Shell

Mitglied: Bracki

Bracki (Level 1) - Jetzt verbinden

25.02.2010 um 12:25 Uhr, 5944 Aufrufe, 16 Kommentare

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.

01.
DIMM #				1 
02.
	SMBus address		0x50 
03.
	Memory type		DDR2 
04.
	Module format		Regular UDIMM 
05.
	Manufacturer (ID)	Kingston (7F98000000000000) 
06.
	Size			1024 MBytes 
07.
	Max bandwidth		PC2-6400 (400 MHz) 
08.
	Part number		                   
09.
	Serial number		7FCC3ED6 
10.
	Manufacturing date	Week 28/Year 09 
11.
	Number of banks		1 
12.
	Data width		64 bits 
13.
	Correction		None 
14.
	Nominal Voltage		1.80 Volts 
15.
	EPP			no 
16.
	XMP			no 
17.
JEDEC timings table		CL-tRCD-tRP-tRAS-tRC @ frequency 
18.
	JEDEC #1		4.0-4-4-12-16 @ 266 MHz 
19.
	JEDEC #2		5.0-5-5-15-20 @ 333 MHz 
20.
	JEDEC #3		6.0-6-6-18-24 @ 400 MHz 
21.
 
22.
DIMM #				2 
23.
	SMBus address		0x51 
24.
	Memory type		DDR2 
25.
	Module format		Regular UDIMM 
26.
	Manufacturer (ID)	Kingston (7F98000000000000) 
27.
	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
Mitglied: 60730
25.02.2010 um 13:14 Uhr
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.
Bitte warten ..
Mitglied: Bracki
25.02.2010 um 13:24 Uhr
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.
Bitte warten ..
Mitglied: TsukiSan
25.02.2010 um 14:11 Uhr
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
01.
' NO CODE REQUIRED IN VBS
Vielleicht bekommst du jetzt ja Lust, es in einer anderen Version auszulesen.

Gruss
Tsuki
Bitte warten ..
Mitglied: Bracki
25.02.2010 um 14:17 Uhr
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.

Mit freundlichen Grüßen
Bracki
Bitte warten ..
Mitglied: TsukiSan
25.02.2010 um 14:24 Uhr
Mh, dann warten wir mal auf bibers, rubbermans oder bastlas hilfe.
das sind die besseren "bätcher".

Gruss
Tsuki
Bitte warten ..
Mitglied: 60730
25.02.2010 um 14:25 Uhr
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.
Bitte warten ..
Mitglied: TsukiSan
25.02.2010 um 14:28 Uhr
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

Viele Grüße
Tsuki
Bitte warten ..
Mitglied: TsukiSan
25.02.2010 um 14:38 Uhr
Also gut,

hier die Batch-Variante (über VBS)
01.
::Auf Wunsch des TOs ist der Code entfernt
den Rest, Bracki, schaffst 'e alleine

Gruss
Tsuki

[Edit]
.... Danke Tsuki für Deine Bemühungen, aber bitte kein VBS. face-wink
also gut, dein Wunsch ist mir Befehl
[/Edit]
Bitte warten ..
Mitglied: Bracki
25.02.2010 um 14:39 Uhr
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.

Mit freundlichen Grüßen

Bracki


.... Danke Tsuki für Deine Bemühungen, aber bitte kein VBS.
Bitte warten ..
Mitglied: TsukiSan
25.02.2010 um 14:54 Uhr
Rufe hiermit meine Antworten zurück.

Gruss
Tsuki
Bitte warten ..
Mitglied: Schwinni79
25.02.2010 um 15:07 Uhr
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
Bitte warten ..
Mitglied: bastla
25.02.2010 um 20:46 Uhr
... der Frage von Schwinni79 schließe ich mich an ...

Ansonsten - versuch es mal damit:
01.
@echo off & setlocal 
02.
set "SpL=c:\windows\system32\Speicher.txt" 
03.
set "SpR=u:\NW_Speicher.txt" 
04.
 
05.
set "SpT=%temp%\Speicherinfo.txt 
06.
del "%SpT%" 2>nul 
07.
 
08.
set "D=" 
09.
for /f "usebackq delims=" %%i in ("%SpL%") do call :ProcessLine "%%i	" 
10.
if defined D >>"%SpT%" echo %D% 
11.
 
12.
if exist "%SpR%" findstr /v /b "%computername%;" "%SpR%">>"%SpT%" 
13.
copy "%SpT%" "%SpR%" 
14.
goto :eof 
15.
 
16.
:ProcessLine 
17.
echo %~1|findstr /b /c:"DIMM #">nul && goto :DIMM 
18.
if not defined D goto :eof 
19.
for /f "tokens=3 delims=	" %%a in ('echo %1^|findstr /c:"Memory type"') do set "D=%D%;%%a" 
20.
for /f "tokens=3 delims=	" %%a in ('echo %1^|findstr /c:"Size"') do set "D=%D%;%%a" 
21.
for /f "tokens=3 delims=	" %%a in ('echo %1^|findstr /c:"Max bandwidth"') do set "D=%D%;%%a" 
22.
goto :eof 
23.
 
24.
:DIMM 
25.
if defined D >>"%SpT%" echo %D% 
26.
for /f "tokens=2 delims=	" %%a in (%1) do set "D=%computername%;DIMM%%a" 
27.
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 ) herauskommen ... [/Edit]
Bitte warten ..
Mitglied: Biber
25.02.2010 um 21:17 Uhr
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!
[/Edit]
Bitte warten ..
Mitglied: Bracki
26.02.2010 um 09:45 Uhr
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.

Mit freundlichen Grüßen

Bracki



uuuuuups ... falsche Positon.
Bitte warten ..
Mitglied: bastla
26.02.2010 um 09:52 Uhr
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
Bitte warten ..
Mitglied: Biber
26.02.2010 um 10:04 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
gelöst BATCH: Daten aus Textdatei auslesen und in neue Textdatei separieren (9)

Frage von Manuel1234 zum Thema Batch & Shell ...

Batch & Shell
gelöst Mit batch zeilen auslesen (2)

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst HTML-Seiten öffnen und bestimmte Daten auslesen (1)

Frage von makroll10 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Userverwaltung
Ausgeschiedene Mitarbeiter im Unternehmen - was tun mit den AD Konten? (34)

Frage von patz223 zum Thema Windows Userverwaltung ...

LAN, WAN, Wireless
gelöst Server erkennt Client nicht wenn er ausserhalb des DHCP Pools liegt (28)

Frage von Mar-west zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2008R2 startet nicht mehr (Bad Patch 0xa) (18)

Frage von Haures zum Thema Windows Server ...