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

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, 7272 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 ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

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

Frage von keksegriller zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch-Skript: Messdaten in Textdatei finden und in eine neue Datei schreiben (5)

Frage von habmalnefrage zum Thema Batch & Shell ...

Batch & Shell
gelöst Kl. Frage: Log-File schreiben per Batch (3)

Frage von Yauhun zum Thema Batch & Shell ...

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

Frage von Manuel1234 zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...