Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen (A bis Z)

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

Batch, Zeilen aus Textdateien in eine neue schreiben

Frage Entwicklung Batch & Shell

Mitglied: Kaffeepause

Kaffeepause (Level 1) - Jetzt verbinden

11.12.2009 um 10:58 Uhr, 7305 Aufrufe, 8 Kommentare

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
01.
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:
01.
"DisplayName"="Conexant AC-Link Audio"

Viele Grüße,
Kaffeepause
Mitglied: 60730
11.12.2009 um 11:14 Uhr
moin,

was liefert denn:

01.
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...
Bitte warten ..
Mitglied: TsukiSan
11.12.2009 um 11:16 Uhr
lass mal bei
findstr "DisplayName" "C:\Temp\*_software.log">>"C:\Temp\Ausgabe\Gesamt.log"
die Hochkommas bei
"C:\Temp\*_software.log"
weg.

Gruss
Tsuki

Ps.: ansonsten siehe Timos Antwort
Bitte warten ..
Mitglied: Kaffeepause
11.12.2009 um 12:11 Uhr
Hallo und danke für die schnelle Antwort.

Ist ein Export mit Regedit, ja.

OK. Ersten Fehler gefunden.
Unicode.
Wandel ich eine Datei in ANSI um, dann klappt es mit FINDSTR.

Argh.

Die Hochkommas sind übrigens nicht relevant.

Jetzt muss ich schauen, ob ich den Befehl
01.
REG EXPORT HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
irgendwie so modifizieren kann, dass dabei nicht Unicode BOM, sondern ANSI rauskommt.

Oder ich hab eben gelitten.
Oder ich finde ein Programm, was mir eine Batchkonvertierung von Textdateien macht.



Nur der Vollständigkeit halber:
Wie haue ich den Rechnernamen in die Zieldatei?
Der Rechnername ergibt sich aus den ersten Zeichen der einzelnen Log-Datei.
Also sowas wie:
Schreib mir alle Zeichen vor "_" der aktuell geöffneten Datei in die Zieldatei.

Viele Grüße,
Kaffeepause
Bitte warten ..
Mitglied: Kaffeepause
11.12.2009 um 12:14 Uhr
ANSI-Problem gelöst:
statt
01.
REG EXPORT HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
muss ich den hier nehmen:
01.
regedit /a C:\Ausgabe.txt "HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall"

Bleibt die Frage, wie ich den aktuellen Dateinamen analysiere und diese Information in der Zieldatei anhänge.
Bitte warten ..
Mitglied: Kaffeepause
11.12.2009 um 12:24 Uhr
Hmmm. Ok.
Da der FINDSTR-Befehl bei der Ausgabe sowieso den aktuellen Dateinamen VORNE dranschreibt, kann ich damit leben.

Also, ANSI statt UNICODE, die Information hat mir weitergeholfen.

Ich setz das mal auf gelöst.

Schönes Wochenende noch.
Die Kaffeepause
Bitte warten ..
Mitglied: TsukiSan
11.12.2009 um 13:14 Uhr
@ Timo,

du hast natürlich vollkommen Recht!
Ich batche halt zu wenig, mea culpa. Mit oder ohne " geht's.
Danke für den Hinweis!

Gruss
Tsuki
Bitte warten ..
Mitglied: 60730
11.12.2009 um 14:26 Uhr
Salü,

Nur der Vollständigkeit halber:
Wie haue ich den Rechnernamen in die Zieldatei?

nicht mit dem Hammer
01.
findstr "DisplayName" "C:\Temp\*_software.log">>"C:\Temp\Ausgabe\Gesamt.log && echo %computername% >>"C:\Temp\Ausgabe\Gesamt.log"
Gruß
Bitte warten ..
Mitglied: Kaffeepause
11.12.2009 um 14:32 Uhr
neee, hehe, DAS geht natürlich nicht. Die Batch führe ich ja von MEINEM Rechner aus.
Da wäre %computername% nicht so der Brüller, weil ich ja dann in jeder Zeile meinen Rechner drin hätte.

Aber, wie ich schrieb, schreibt FINDSTR in der Ausgabe den Namen der Quelldatei an den Anfang. Insofern habe ich den Rechnernamen automatisch drin.

Viele Grüße,
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
gelöst Erstellungsdatum vor jede Zeile einer Textdatei schreiben (5)

Frage von freakonaleash zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch um Satz zwischen Anführungszeichen aus 1. Zeile in Textdatei lesen (3)

Frage von georg2204 zum Thema Batch & Shell ...

Batch & Shell
gelöst Bestimmte Zeile einer Textdatei mit Batch auslesen (2)

Frage von PinkFLuffyUnicorn zum Thema Batch & Shell ...

Batch & Shell
gelöst Komplette Zeile aus Textdatei auslesen (3)

Frage von tegwert zum Thema Batch & Shell ...

Neue Wissensbeiträge
Windows Update

Novemberpatches und Nadeldrucker bereiten Kopfschmerzen

(14)

Tipp von MettGurke zum Thema Windows Update ...

Windows 10

Abhilfe für Abstürze von CDPUsersvc auf Win10 1607 und 2016 1607

(7)

Tipp von DerWoWusste zum Thema Windows 10 ...

RedHat, CentOS, Fedora

Fedora 27 ist verfügbar

Information von Frank zum Thema RedHat, CentOS, Fedora ...

Heiß diskutierte Inhalte
Server
Bilder aus dem Web mit CSV runterladen (30)

Frage von Yannosch zum Thema Server ...

LAN, WAN, Wireless
Gebäudeverkabelung 10Gigabit LWL (27)

Frage von raffzwo zum Thema LAN, WAN, Wireless ...

Windows Update
Novemberpatches und Nadeldrucker bereiten Kopfschmerzen (14)

Tipp von MettGurke zum Thema Windows Update ...