Batch, Zeilen aus Textdateien in eine neue schreiben
Ich möchte mehrere Textdateien auswerten, d.h. bestimmte Zeilen extrahieren und zusammen mit Parametern in eine neue schreiben.
Hallo,
zunächst einmal bitte ich um Entschuldigung, weil ich diese Frage poste, obwohl es hier schon zig Beiträge zu Batches gibt, die Textzeilen extrahieren. Aber die Syntax einiger Befehle verwirrt mich immer (delims) und bis jetzt klappt es einfach nicht so, wie ich es gern hätte.
Ich habe eine Startskript geschrieben, welches mir die installierten Programme (Registry-Schlüssel) in eine Datei exportiert. Das funktioniert. Nun habe ich pro Computer eine aktuelle Textdatei mit dem Schlüssel der installierten Programme (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall).
Aus diesen möchte ich jeweils die Zeilen extrahieren, in denen der "DisplayName" oder die "DisplayVersion" steht und das dann zusammen mit dem Computernamen (der im Dateinamen steht) in eine gemeinsame Datei schreiben. Als wirklich rudimentäre Softwareinventarisierung. Bitte bietet mir hier keine Software an, mit der ich inventarisieren kann, ich möchte nur die Batch zum Laufen kriegen.
In Deutsch heißt das:
Finde in allen Dateien, die "*_software.log" heißen die Zeilen mit "DisplayName" (und "DisplayVersion") und schreibe diese Zeilen in die Textdatei "Software_Gesamt.log", gefolgt vom Rechnernamen.
Der Rechnername steht immer an Anfang der Log-Datei (computername_software.log).
Also überarbeitet:
Finde in allen Dateien, die "*_software.log" heißen die Zeilen mit "DisplayName" (und "DisplayVersion") und schreibe diese Zeilen in die Textdatei "Gesamt.log", gefolgt von den Zeichen vor dem Unterstrich des aktuellen Dateinamens.
Bis jetzt habe ich nur
Der rechnet zwar 1-2 Sekunden, aber die erzeugte Datei (Gesamt.log) ist einfach nur 0 kb und damit leer.
Ein Beispiel für die Zeile, die ich extrahieren möchte. So sieht sie in der Originaldatei aus:
Viele Grüße,
Kaffeepause
Hallo,
zunächst einmal bitte ich um Entschuldigung, weil ich diese Frage poste, obwohl es hier schon zig Beiträge zu Batches gibt, die Textzeilen extrahieren. Aber die Syntax einiger Befehle verwirrt mich immer (delims) und bis jetzt klappt es einfach nicht so, wie ich es gern hätte.
Ich habe eine Startskript geschrieben, welches mir die installierten Programme (Registry-Schlüssel) in eine Datei exportiert. Das funktioniert. Nun habe ich pro Computer eine aktuelle Textdatei mit dem Schlüssel der installierten Programme (HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall).
Aus diesen möchte ich jeweils die Zeilen extrahieren, in denen der "DisplayName" oder die "DisplayVersion" steht und das dann zusammen mit dem Computernamen (der im Dateinamen steht) in eine gemeinsame Datei schreiben. Als wirklich rudimentäre Softwareinventarisierung. Bitte bietet mir hier keine Software an, mit der ich inventarisieren kann, ich möchte nur die Batch zum Laufen kriegen.
In Deutsch heißt das:
Finde in allen Dateien, die "*_software.log" heißen die Zeilen mit "DisplayName" (und "DisplayVersion") und schreibe diese Zeilen in die Textdatei "Software_Gesamt.log", gefolgt vom Rechnernamen.
Der Rechnername steht immer an Anfang der Log-Datei (computername_software.log).
Also überarbeitet:
Finde in allen Dateien, die "*_software.log" heißen die Zeilen mit "DisplayName" (und "DisplayVersion") und schreibe diese Zeilen in die Textdatei "Gesamt.log", gefolgt von den Zeichen vor dem Unterstrich des aktuellen Dateinamens.
Bis jetzt habe ich nur
findstr "DisplayName" "C:\Temp\*_software.log">>"C:\Temp\Ausgabe\Gesamt.log"
Der rechnet zwar 1-2 Sekunden, aber die erzeugte Datei (Gesamt.log) ist einfach nur 0 kb und damit leer.
Ein Beispiel für die Zeile, die ich extrahieren möchte. So sieht sie in der Originaldatei aus:
"DisplayName"="Conexant AC-Link Audio"
Viele Grüße,
Kaffeepause
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 131493
Url: https://administrator.de/contentid/131493
Ausgedruckt am: 21.11.2024 um 22:11 Uhr
8 Kommentare
Neuester Kommentar
moin,
was liefert denn:
bist du dir sicher, dass DisplayName tatsächlich in einer Datei *_software.log im Ordner c:\temp drin ist?
Denn wenn es so wäre - müßte die auch angezeigt werden
Ps: Mit was erzeugst du eigentlich die *_Software.log - wenn das Unicode Dateien sind - findet "find" & co nix....
regedit ? oder reg.exe....
Gruß
edit @tsuki - neee die sind Jacke wie Hose ich tippe auf einen export mit regedit...
was liefert denn:
findstr "DisplayName" "C:\Temp\*_software.log"
bist du dir sicher, dass DisplayName tatsächlich in einer Datei *_software.log im Ordner c:\temp drin ist?
Denn wenn es so wäre - müßte die auch angezeigt werden
Ps: Mit was erzeugst du eigentlich die *_Software.log - wenn das Unicode Dateien sind - findet "find" & co nix....
regedit ? oder reg.exe....
Gruß
edit @tsuki - neee die sind Jacke wie Hose ich tippe auf einen export mit regedit...
Salü,
nicht mit dem Hammer
Gruß
Nur der Vollständigkeit halber:
Wie haue ich den Rechnernamen in die Zieldatei?
Wie haue ich den Rechnernamen in die Zieldatei?
nicht mit dem Hammer
findstr "DisplayName" "C:\Temp\*_software.log">>"C:\Temp\Ausgabe\Gesamt.log && echo %computername% >>"C:\Temp\Ausgabe\Gesamt.log"
Gruß