elektroluke
Goto Top

Mit Batchdatei in Textdatei nach Wort suchen und Wortgruppe dahinter in eine andere Textdatei kopieren

@ the mods :P

Habe mich vorhin wohl verklickt - bitte diesen Beitrag zu den Fragen verschieben!

Vielen Danke face-smile


Guten Tag liebe Programmierfreunde,

ich habe eine kleines Anliegen, dass sicherlich mit Hilfe einer Batchdatei aus der Welt geschaffen werden könnte..

Ich habe eine Textdatei in welcher Informationen über Software und Hardware verschiedener Rechner aufgelistet sind.
Allerdings enthält die Datei zu viel unbrauchbare Informationen..
Bevor ich die benötigten Daten nun per Hand aus der Datei heraus schreibe, wollte ich wissen, ob es mittels einer Batchdatei möglich ist:

ein bestimmtes Schlagwort oder Wortgruppe suchen zu lassen und das dahinter stehende Wort zu kopieren und in eine andere Textdatei zu speicher.


Man kann sich das so vorstellen:


In der Datei rechnerliste.txt sind beispielsweise folgende Informationen:


Computername: Rechner1
Betriebssystem: Windows XP Home
Arbeitsspeicher: 1024 MB
Grafikkarte: Intel(R) 82945G Express Chipset Family (224 MB)
Monitor: Dell 1905FP (Digital) [NoDB]


Computername: Rechner2
Betriebssystem: Windows Professional
Arbeitsspeicher: 2048MB
Grafikkarte: Ge-force FX 5200
Monitor: Dell 2000FP (Digital)


Computername: Rechner3
Betriebssystem: Windows XP Professional
Arbeitsspeicher: 1024 MB
Grafikkarte: RADEON X300 SE 128MB
Monitor: Dell 1905FP (Digital)


usw..
Ich suche nach den Schlagwörtern "Computername: ", "Arbeitsspeicher: " und "Grafikkarte: " und in der neuen Textdatei sollen dann folgende Informationen zu jedem Rechner stehen:

Rechner1
1024MB
Intel(R) 82945G Express Chipset Family (224 MB)

Rechner2
2048MB
Ge-force FX 5200

Rechner3
1024 MB
RADEON X300 SE 128MB

usw..


Ich hoffe, das war einigermaßen verständlich erklärt.

Ich habe schon einige versuche mit "findstr" gestartet, hatte aber bisher nicht so wirklichen Erfolg face-smile

Wenn noch Unklarheiten vorhanden sind, scheut euch nicht mich zu fragen .

Ich freue mich auf eure Antworten und verbleibe mit besten Grüßen.


e-luke

Content-ID: 114082

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

Ausgedruckt am: 21.11.2024 um 20:11 Uhr

60730
60730 17.04.2009, aktualisiert am 18.10.2012 um 18:38:00 Uhr
Goto Top
Servus,

wenn mit Findstr - dann mit parameter /v die ausfiltern - die du nicht haben willst.

Aber ehrlicherweise "gefällt" mir die Anordnung "untereinander" nicht - und deswegen "zimmere" ich dir das auch nicht aus face-wink

Nimm doch eine Tabelle, macht irgendwie mehr Sinn.

face-wink

Gruß
Elektroluke
Elektroluke 17.04.2009 um 11:49:19 Uhr
Goto Top
Hallo Timo,


vielleicht habe ich da etwas falsch verstanden bei deinem Tool.
So wie ich das jetzt aufgefasst habe, kann ich damit direkt Informationen von allen Rechnern im Netzwerk einholen und in eine Datenbank oder Tabelle schreiben lassen - richtig?


Meine Textdatei ist aber bereits mit allen nötigen Informationen ausgestatten (Auch Informationen, die ein Tool, wahrscheinlich nicht auslesen kann, wie z.B. Raum- und Etagennnummer, in der der Rechner sich befindet.


Die findstr mit dem Paramater V scheint mir auch schon fast etwas unpassend für mein Vorhaben, da es am Ende sehr viel gibt, was nciht mir aufgelistet werden soll.
Aber es scheint mir noch besser, als jeden einzelnen Beitrag durch zu schauen, un per Hand zu entfernen face-smile

also schon mal Danke face-smile

Wenn dir noch etwas anderes einfällt, würde ich mich über einen weiteren Beitrag deiner Seits freuen.

Gruß~


edit:


Die Anordnung muss jetzt nicht unbedingt untereinander sein :P
Und ja.. wenn findstr gleich in Excel-Dateien schreibt, ohne, dass ich danach alles komplett neu formatieren muss, werde ich das natürlich vorziehen ;)
60730
60730 17.04.2009 um 12:03:46 Uhr
Goto Top
Zitat von @Elektroluke:
Hallo Timo,


vielleicht habe ich da etwas falsch verstanden bei deinem Tool.
So wie ich das jetzt aufgefasst habe, kann ich damit direkt
Informationen von allen Rechnern im Netzwerk einholen und in eine
Datenbank oder Tabelle schreiben lassen - richtig?


Es ist nicht "mein" Tool - sondern das von Mark Russinovich - aber Ja

Meine Textdatei ist aber bereits mit allen nötigen Informationen
ausgestatten (Auch Informationen, die ein Tool, wahrscheinlich nicht
auslesen kann, wie z.B. Raum- und Etagennnummer, in der der Rechner
sich befindet.

Naja - ich nutze "das" auch nicht alleine -sondern benutze verknüpfte (statische) Tabellen

Die findstr mit dem Paramater V scheint mir auch schon fast etwas
unpassend für mein Vorhaben, da es am Ende sehr viel gibt, was
nciht mir aufgelistet werden soll.
Ich hab mir deine Auflistung (Beispiele) angesehen und Schlussfolgerte das halt so..
Aber es scheint mir noch besser, als jeden einzelnen Beitrag durch zu
schauen, un per Hand zu entfernen face-smile

Und wenn "tatsächlich" nur das, was hinter ":" steht gebraucht wird- dann danach (ungetestet)
@for /f "tokens=2,* delims=: " %%i in ('findstr ":" logfile.log') do echo %%i>>neueslogfile.log
hinterwerfen....

Gruß
Elektroluke
Elektroluke 17.04.2009 um 12:10:49 Uhr
Goto Top
Zitat von @60730:
Es ist nicht "mein" Tool - sondern das von Mark Russinovich
- aber Ja

Ich bitte um Verzeihung face-smile


Und wenn "tatsächlich" nur das, was hinter
":" steht gebraucht wird- dann danach (ungetestet)
> @for /f "tokens=2,* delims=: " %%i in ('findstr
":" logfile.log') do echo %%i>>neueslogfile.log
hinterwerfen....


Vielen Dank, werde ich ausprobieren.
Ich melde mich wieder mit den Ergebnissen. Aber nochmals vielen Dank bis hier her!

Aber erstmal gibts Mittag - Mahlzeit! face-smile
bastla
bastla 17.04.2009 um 12:24:22 Uhr
Goto Top
Hallo Elektroluke und TimoBeil!

Ich würde ebenfalls zu "findstr" greifen, aber zunächst noch eine "infoliste.txt" mit dem folgenden Inhalt erstellen:
Computername:
Arbeitsspeicher:
Grafikkarte:
Dann würde sich das Filtern auf
for /f "tokens=1* delims=:" %i in ('findstr /b /g:infoliste.txt rechnerliste.txt') do echo %j>>rechnerinfos.txt
beschränken ...

Grüße
bastla
Elektroluke
Elektroluke 17.04.2009 um 13:39:24 Uhr
Goto Top
Vielleicht stelle ich mich nur etwas dumm an, aber ich bekomme das so nicht zum laufen..

Aber ich habe eine andere Vorgehensweise, die wohl klappen könnte (auch wenn sie sicher etwas unschön ist..)

Zuerst werde ich mit dem standardmäßigen findstr-Befehl die Schlagwörter + Komplette Zeile in eine Textdatei speichern (Beispielsweise nehme ich das Schlagwort \"Computername\" und erhalte dann die Zeile Computername: Rechner1)
Danach werde ich einfach die Schlagwörter wieder herausfiltern (Mit /v - danke an der Stelle für den hinweis face-smile) und habe, dann nur noch die Daten, die ich auch wirklich benötige..

Sollte doch eigentlich klappen :P

Ich melde mich wieder..


edit:

Okay.. es klappt nicht so ganz wie ich es mir dachte..

Bei dem Parameter /v wird natürlich wieder die komplette Zeile herausgefiltert und nicht nur das Schlagwort an sich..
Habe schon mal in der Hilfe geschaut, ob es einen Parameter gibt, der nur einzelne Wörter herausfiltert , bin dabei aber nicht fündig geworden.

Vielleicht habt ihr dazu ja auch spontan eine Antwort, während ich Herrn Google befrage face-smile


Ich danke für eure Geduld mit mir ;D
60730
60730 17.04.2009 um 13:44:04 Uhr
Goto Top
Zitat von @Elektroluke:
Vielleicht habt ihr dazu ja auch spontan eine Antwort, während ich Herrn Google befrage face-smile

Servus,

machs mal "gleich" so - wie Herr Bastla schreibt - denn wenn du Frau Google fragst - verbindet die dich eh mit Herrn Bastla face-wink

Gruß
Elektroluke
Elektroluke 17.04.2009 um 14:17:30 Uhr
Goto Top
Alles klar - habe gehorcht und es hat funktioniert face-smile

Vielen Dank euch beiden!


würde den Beitrag gerne als behoben markieren, aber ich hab vorhin leider etwas geschlafen und den Thread unter "Anleitungen" eröffnet <rotanlauf>

Ich hoffe ein Mod wird sich bald darum kümmern face-smile

Schönen tag noch!

edit:

ich seh grad, dass ich das selber machen kann :P