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

Batch & Shell
gelöst Per Batch in ausgewählte oder vorgeschriebene Zeile einer .txt schreiben (6)

Frage von pdiddo zum Thema Batch & Shell ...

Neue Wissensbeiträge
Mac OS X

Apple hat macOS High Sierra veröffentlicht

Information von Frank zum Thema Mac OS X ...

Viren und Trojaner

Ransomware or Wiper? RedBoot Encrypts Files but also Modifies Partition Table

(4)

Information von BassFishFox zum Thema Viren und Trojaner ...

Notebook & Zubehör

WOL bei HP Notebooks

(7)

Erfahrungsbericht von Henere zum Thema Notebook & Zubehör ...

Heiß diskutierte Inhalte
Windows 10
gelöst Netzwerkkarte schaltet sich erst nach dem Logon ein (24)

Frage von DerWoWusste zum Thema Windows 10 ...

Windows Server
Seit IP Umstellung DC DNS Fehler (19)

Frage von Yaimael zum Thema Windows Server ...

Weiterbildung
gelöst Fest angestellter Admin oder Systemhaus Admin mit Kundenbetreuung? (15)

Frage von Voiper zum Thema Weiterbildung ...