Top-Themen

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

Frage Entwicklung Batch & Shell

GELÖST

Findstr zwei Variablen finden in txt datei

Mitglied: zimbo2150

zimbo2150 (Level 1) - Jetzt verbinden

17.01.2012 um 15:55 Uhr, 3952 Aufrufe, 6 Kommentare

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:

[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

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
Mitglied: bastla
17.01.2012 um 16:09 Uhr
Hallo zimbo2150 und willkommen im Forum!

Um mehrere Suchbegriffe zu finden, kannst Du "findstr" (wie Du lt Threadtitel ohnehin schon erkannt haben dürftest ) verwenden - etwa:
01.
for /f "tokens=2 delims==" %i ('findstr "DisplayName DisplayVersion" inst.txt') do  @echo %i
Wenn es umeine größere Anzahl vonSuchbegriffen oder solche mit Leerzeichen ginge, wäre die Alternative "/g:" mit einer Liste der Suchbegriffe in Dateiform zu verwenden ...

Grüße
bastla
Bitte warten ..
Mitglied: zimbo2150
17.01.2012 um 16:21 Uhr
Zitat von bastla:
Hallo zimbo2150 und willkommen im Forum!
Danke
und Danke für die schnelle Antwort

Zitat von bastla:
Um mehrere Suchbegriffe zu finden, kannst Du "findstr" (wie Du lt Threadtitel ohnehin schon erkannt haben
dürftest ) verwenden - etwa:
01.
for /f "tokens=2 delims==" %i ('findstr "DisplayName DisplayVersion" inst.txt') do  
02.
> @echo %i 
03.
> 
Wenn es umeine größere Anzahl vonSuchbegriffen oder solche mit Leerzeichen ginge, wäre die Alternative
"/g:" mit einer Liste der Suchbegriffe in Dateiform zu verwenden ...

Grüße
bastla

hab ich probiert aber ohne Ergebnis
habe auch diese Version geteste
01.
for /f "tokens=2 delims==" %i ('findstr "DisplayName" inst.txt') do @echo %i 
Bitte warten ..
Mitglied: bastla
17.01.2012 um 19:21 Uhr
Hallo zimbo2150!

Ändert sich das Ergebnis, wenn Du das fehlende "in" (hatte ich vorhin leider auch übersehen) ergänzt?
for /f "tokens=2 delims==" %i in ('findstr "DisplayName DisplayVersion" inst.txt') do @echo %~i
Grüße
bastla
Bitte warten ..
Mitglied: zimbo2150
18.01.2012 um 10:12 Uhr
Zitat von bastla:
Ändert sich das Ergebnis, wenn Du das fehlende "in" (hatte ich vorhin leider auch übersehen)
ergänzt?
for /f "tokens=2 delims==" %i in ('findstr "DisplayName DisplayVersion" inst.txt') do @echo %~i 


hi bei deiner Version kam immer die Frage "mehr?" in einer endlos Schleife.

hab jetzt diese Version zum laufen gebracht

 for /f "tokens=2 delims==" %i in ('type inst.txt^|findstr "DisplayName DisplayVersion"') do @echo %i 
Mein neues Problem ist nun, mir ist aufgefallen das in der Registry Ausgabe also der inst.txt die Anordnung von DisplayName und DisplayVersion manchmal vertauscht wird und manchmal fehlt.
wie kann ich denn die Auagabe pro Key machen also das er [HKEY_LOCAL_MACHINE\ sucht dann DisplayVersion und DisplayName

  
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FDB3B167-F4FA-461D-976F-286304A57B2A}] 
"AuthorizedCDFPrefix"="" 
"Comments"="" 
"Contact"="" 
"DisplayVersion"="2.7.1.19610" 
"HelpLink"="" 
"HelpTelephone"="" 
"InstallDate"="20110924" 
"InstallLocation"="c:\\Program Files\\Common Files\\Adobe AIR\\" 
"InstallSource"="c:\\users\\j8910~1\\appdata\\local\\temp\\air73d7.tmp\\" 
"ModifyPath"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\ 
  00,65,00,20,00,2f,00,49,00,7b,00,46,00,44,00,42,00,33,00,42,00,31,00,36,00,\ 
  37,00,2d,00,46,00,34,00,46,00,41,00,2d,00,34,00,36,00,31,00,44,00,2d,00,39,\ 
  00,37,00,36,00,46,00,2d,00,32,00,38,00,36,00,33,00,30,00,34,00,41,00,35,00,\ 
  37,00,42,00,32,00,41,00,7d,00,00,00 
"Publisher"="Adobe Systems Incorporated" 
"Readme"="" 
"Size"="" 
"EstimatedSize"=dword:0000788b 
"SystemComponent"=dword:00000001 
"UninstallString"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\ 
  78,00,65,00,20,00,2f,00,49,00,7b,00,46,00,44,00,42,00,33,00,42,00,31,00,36,\ 
  00,37,00,2d,00,46,00,34,00,46,00,41,00,2d,00,34,00,36,00,31,00,44,00,2d,00,\ 
  39,00,37,00,36,00,46,00,2d,00,32,00,38,00,36,00,33,00,30,00,34,00,41,00,35,\ 
  00,37,00,42,00,32,00,41,00,7d,00,00,00 
"URLInfoAbout"="" 
"URLUpdateInfo"="" 
"VersionMajor"=dword:00000002 
"VersionMinor"=dword:00000007 
"WindowsInstaller"=dword:00000001 
"Version"=dword:02070001 
"Language"=dword:00000409 
"DisplayName"="Adobe AIR" 
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{FF66E9F6-83E7-3A3E-AF14-8DE9A809A6A4}] 
"AuthorizedCDFPrefix"="" 
"Comments"="" 
"Contact"="" 
"DisplayVersion"="9.0.21022" 
"HelpLink"="" 
"HelpTelephone"="" 
"InstallDate"="20110720" 
"InstallLocation"="" 
"InstallSource"="c:\\2d32e62a9c659edb17380f67802d\\" 
"ModifyPath"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,78,\ 
  00,65,00,20,00,2f,00,58,00,7b,00,46,00,46,00,36,00,36,00,45,00,39,00,46,00,\ 
  36,00,2d,00,38,00,33,00,45,00,37,00,2d,00,33,00,41,00,33,00,45,00,2d,00,41,\ 
  00,46,00,31,00,34,00,2d,00,38,00,44,00,45,00,39,00,41,00,38,00,30,00,39,00,\ 
  41,00,36,00,41,00,34,00,7d,00,00,00 
"NoModify"=dword:00000001 
"NoRepair"=dword:00000001 
"Publisher"="Microsoft Corporation" 
"Readme"="" 
"Size"="" 
"EstimatedSize"=dword:000005a6 
"UninstallString"=hex(2):4d,00,73,00,69,00,45,00,78,00,65,00,63,00,2e,00,65,00,\ 
  78,00,65,00,20,00,2f,00,58,00,7b,00,46,00,46,00,36,00,36,00,45,00,39,00,46,\ 
  00,36,00,2d,00,38,00,33,00,45,00,37,00,2d,00,33,00,41,00,33,00,45,00,2d,00,\ 
  41,00,46,00,31,00,34,00,2d,00,38,00,44,00,45,00,39,00,41,00,38,00,30,00,39,\ 
  00,41,00,36,00,41,00,34,00,7d,00,00,00 
"URLInfoAbout"="" 
"URLUpdateInfo"="" 
"VersionMajor"=dword:00000009 
"VersionMinor"=dword:00000000 
"WindowsInstaller"=dword:00000001 
"Version"=dword:0900521e 
"Language"=dword:00000409 
"DisplayName"="Microsoft Visual C++ 2008 Redistributable - x86 9.0.21022" 
 
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{D0795B21-0CDA-4a92-AB9E-6E92D8111E44}\25_escape] 
"DisplayName"="SAMSUNG USB Driver for Mobile Phones" 
"UninstallString"="C:\\Program Files\\Samsung\\USB Drivers\\25_escape\\Uninstall.exe" 
"DisplayVersion"="2.9.201.1018" 
"URLInfoAbout"="http://www.samsungmobile.com" 
"Publisher"="SAMSUNG Electronics Co., Ltd." 
"Version"="2.9.201.1018"    
Bitte warten ..
Mitglied: icsat
18.01.2012 um 11:09 Uhr
Hallo zimbo2150,

Zitat von zimbo2150:
wie kann ich denn die Auagabe pro Key machen
Die Ausgabe ist doch pro Key, da der "findstr" die Eingabedatei sequentiell abarbeitet.
So werden z.B. die trennenden "HKEY_LOCAL_MACHINE" mit ausgegeben:
01.
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
Bitte warten ..
Mitglied: zimbo2150
18.01.2012 um 13:08 Uhr
icsat: bastla:

Danke für eure Hilfe und vor allem so schnell. Setz den Beitrag als gelöst.

Es soll man der B.Sc. Kommunikationsinformatik rauskommen noch 6 Wochen dann ist Abgabe
Bitte warten ..
Ähnliche Inhalte
Windows 7
Txt Datei mit findstr durchsuchen
gelöst Frage von 126594Windows 72 Kommentare

Hallo zusammen! Leider komme ich gerade an meine Grenzen und weiß nicht mehr weiter, jetzt hoffe ich hier, den ...

Batch & Shell
Variablen aus Txt datei erstellen
Frage von Ghost-7KBatch & Shell3 Kommentare

Guten Tag die Damen und Herren, ich sitze gerade daran für meine Firma ein batch zur Sicherung von Disketten ...

Batch & Shell
In Batch FINDSTR in Variable und auch noch kuerzen
gelöst Frage von deathwormBatch & Shell2 Kommentare

Hallo! Ich habe folgendes Problem. Beim verschluesseln von Festplatten wird ein Key generiert und dieser in eine TXT Datei ...

Batch & Shell
FINDSTR TXT Dateien nach Suchwort1 UND Suchwort2 durchsuchen
gelöst Frage von joemouthBatch & Shell6 Kommentare

Hallo Freunde der gepflegten Batchprogrammierung, ich möchte TXT Dateien (inkl Unterverzeichnisse) finden, die irgendwo Suchwort1 UND Suchwort2 enthalten. Suchwort1 ...

Neue Wissensbeiträge
Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 12 StundenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 13 StundenSicherheit7 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 14 StundenSicherheit9 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Sicherheit

Meltdown und Spectre: Die machen uns alle was vor

Information von Frank vor 14 StundenSicherheit12 Kommentare

Aktuell sieht es in den Medien so aus, als hätten die Hersteller wie Intel, Microsoft und Co den aktuellen ...

Heiß diskutierte Inhalte
Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von 92943Windows 1031 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Batch & Shell
Anmeldevorgang für Informatikraum (Schule) unter Windows
gelöst Frage von IngenieursBatch & Shell29 Kommentare

Hey zusammen, ich werde in naher Zukunft den Informatik Raum meiner jetzigen Schule von dem aktuellen Betreiber übernehmen (Vertrag ...

Netzwerkgrundlagen
Welches Modem für VDSL 50000 der T-Com
Frage von Windows10GegnerNetzwerkgrundlagen20 Kommentare

Hallo, ein Kollege von mir will sich VDSL50000 von der T-Com holen, um daran einen Server zu betreiben. Ich ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...