Findstr zwei Variablen finden in txt datei
hallo,
ich versuche aus einer text datei zwei häufig vorkommende Variablen zu finden.
und zwar habe ich mittels regedit mit den Key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
ausgelesen und dann als txt gespeicher sieht dann so aus:
ich brauche nun aus dieser Liste die Einträge DisplayName und DisplayVersion
was ich bis jetzt hinbekommen hab ist
wie bekomme ich die Ausgabe so, dass ich immer ( sofern Vorhanden ) DisplayName und Display Version augegeben werden
Zum Hintergrund:
Ich schreiben grade an meiner BachelorThesis und soll die Softwareliste von Windows über Fernzugriff auslesen und dann in eine Datenbank schreiben
Danke für eure Hilfe
ich versuche aus einer text datei zwei häufig vorkommende Variablen zu finden.
und zwar habe ich mittels regedit mit den Key HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
ausgelesen und dann als txt gespeicher sieht dann so aus:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe AIR]
"DisplayIcon"="c:\\PROGRA~1\\COMMON~1\\ADOBEA~1\\Versions\\1.0\\RESOUR~1\\ADOBEA~1.EXE"
"DisplayName"="Adobe AIR"
"DisplayVersion"="2.7.1.19610"
"InstallLocation"="c:\\Program Files\\Common Files\\Adobe AIR\\"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"Publisher"="Adobe Systems Incorporated"
"UninstallString"="c:\\Program Files\\Common Files\\Adobe AIR\\Versions\\1.0\\Resources\\Adobe AIR Updater.exe -arp:uninstall"
"VersionMajor"=dword:00000002
"VersionMinor"=dword:00000007
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player Plugin]
"DisplayName"="Adobe Flash Player 10 Plugin"
"Publisher"="Adobe Systems Incorporated"
"DisplayVersion"="10.3.183.5"
"HelpLink"="http://www.adobe.com/go/flashplayer_support/"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"RequiresIESysFile"="4.70.0.1155"
"URLInfoAbout"="http://www.adobe.com"
"URLUpdateInfo"="http://www.adobe.com/go/getflashplayer/"
"VersionMajor"=dword:0000000a
"VersionMinor"=dword:00000003
"UninstallString"="C:\\Windows\\system32\\Macromed\\Flash\\FlashUtil10v_Plugin.exe -maintain plugin"
"DisplayIcon"="C:\\Windows\\system32\\Macromed\\Flash\\FlashUtil10v_Plugin.exe"
"EstimatedSize"=dword:00001800
"DisplayIcon"="c:\\PROGRA~1\\COMMON~1\\ADOBEA~1\\Versions\\1.0\\RESOUR~1\\ADOBEA~1.EXE"
"DisplayName"="Adobe AIR"
"DisplayVersion"="2.7.1.19610"
"InstallLocation"="c:\\Program Files\\Common Files\\Adobe AIR\\"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"Publisher"="Adobe Systems Incorporated"
"UninstallString"="c:\\Program Files\\Common Files\\Adobe AIR\\Versions\\1.0\\Resources\\Adobe AIR Updater.exe -arp:uninstall"
"VersionMajor"=dword:00000002
"VersionMinor"=dword:00000007
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Adobe Flash Player Plugin]
"DisplayName"="Adobe Flash Player 10 Plugin"
"Publisher"="Adobe Systems Incorporated"
"DisplayVersion"="10.3.183.5"
"HelpLink"="http://www.adobe.com/go/flashplayer_support/"
"NoModify"=dword:00000001
"NoRepair"=dword:00000001
"RequiresIESysFile"="4.70.0.1155"
"URLInfoAbout"="http://www.adobe.com"
"URLUpdateInfo"="http://www.adobe.com/go/getflashplayer/"
"VersionMajor"=dword:0000000a
"VersionMinor"=dword:00000003
"UninstallString"="C:\\Windows\\system32\\Macromed\\Flash\\FlashUtil10v_Plugin.exe -maintain plugin"
"DisplayIcon"="C:\\Windows\\system32\\Macromed\\Flash\\FlashUtil10v_Plugin.exe"
"EstimatedSize"=dword:00001800
ich brauche nun aus dieser Liste die Einträge DisplayName und DisplayVersion
was ich bis jetzt hinbekommen hab ist
for /f "tokens=2 delims==" %i ('type inst.txt^|find "DisplayName"') do
@echo %i
wie bekomme ich die Ausgabe so, dass ich immer ( sofern Vorhanden ) DisplayName und Display Version augegeben werden
Zum Hintergrund:
Ich schreiben grade an meiner BachelorThesis und soll die Softwareliste von Windows über Fernzugriff auslesen und dann in eine Datenbank schreiben
Danke für eure Hilfe
Bitte markiere auch die Kommentare, die zur Lösung des Beitrags beigetragen haben
Content-ID: 179066
Url: https://administrator.de/forum/findstr-zwei-variablen-finden-in-txt-datei-179066.html
Ausgedruckt am: 22.04.2025 um 08:04 Uhr
6 Kommentare
Neuester Kommentar
Hallo zimbo2150 und willkommen im Forum!
Um mehrere Suchbegriffe zu finden, kannst Du "
) verwenden - etwa:
Wenn es umeine größere Anzahl vonSuchbegriffen oder solche mit Leerzeichen ginge, wäre die Alternative "
Grüße
bastla
Um mehrere Suchbegriffe zu finden, kannst Du "
findstr
" (wie Du lt Threadtitel ohnehin schon erkannt haben dürftest for /f "tokens=2 delims==" %i ('findstr "DisplayName DisplayVersion" inst.txt') do @echo %i
/g:
" mit einer Liste der Suchbegriffe in Dateiform zu verwenden ...Grüße
bastla
Hallo zimbo2150,
Die Ausgabe ist doch pro Key, da der "findstr" die Eingabedatei sequentiell abarbeitet.
So werden z.B. die trennenden "HKEY_LOCAL_MACHINE" mit ausgegeben:
Ich würde bei deiner Problemstellung allerdings anders vorgehen und mich vom Einzeiler verabschieden. Kurz skizziert:
Viel Spaß und viel Erfolg bei Deiner BachelorThesis. Was für ein Bachelor soll dabei denn rauskommen?
Gruß icsAT
Die Ausgabe ist doch pro Key, da der "findstr" die Eingabedatei sequentiell abarbeitet.
So werden z.B. die trennenden "HKEY_LOCAL_MACHINE" mit ausgegeben:
for /f "tokens=1, 2 delims==\" %i in ('type inst.txt^|findstr "DisplayName DisplayVersion HKEY_LOCAL_MACHINE"') do @if "%i"=="[HKEY_LOCAL_MACHINE" (@echo %i) else (@echo %j)
Ich würde bei deiner Problemstellung allerdings anders vorgehen und mich vom Einzeiler verabschieden. Kurz skizziert:
- Variablen zum zwischenspeichern auf Dummywerte setzen
- sequentielles lesen der Eingabedatei
- zwischenspeichern der Namens- und Versionswerte in entsprechende Variablen
- beim Gruppenwechsel (Zeile HKEY_LOCAL_MACHINE) Ausgabe der Daten in die Datenbank und Variablen zurück auf Dummy
Viel Spaß und viel Erfolg bei Deiner BachelorThesis. Was für ein Bachelor soll dabei denn rauskommen?
Gruß icsAT