77575
Goto Top

Wort in txt finden und Zeile in andere txt schreiben

hallo,
gleich vorab, ja ich habe die suchfunktion und ich habe auch mid. 2 beiträge gefunden, die genau mein problem darstellen. aber die lösungen funktionieren nicht.
z. bsp. dieser beitrag: Mit Batch Suchbegriff in .txt finden und die nachfolgenden 8 Stellen auslesen und in neue Datei schreiben

nun zu meiner frage bzw. problem.
ich exportiere aus der registry einen key in eine textdatei. die txt sieht dann so aus:
HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products

HKEY_LOCAL_MACHINE\SOFTWARE\Classes\Installer\Products\00002109010090400000000000F01FEC
ProductName REG_SZ Microsoft Software Update for Web Folders (English) 12
PackageCode REG_SZ B7B7E888CEAAC854EADD4FDFDB421F28
Language REG_DWORD 0x409
Version REG_DWORD 0xc001919

usw
die Datei ist relativ groß.
jetzt möchte ich alle Einträge für ProductName in eine neue Textdatei schreiben.
D.h. dieser String kommt öfters vor. Optimal wäre es wenn man gleich das ProductName REG_SZ löschen könnte und so nur der reine Wert von Produktname übrig bleibt.
in diesem Beispiel also Microsoft Software Update for Web Folders (English) 12


Probiert habe ich folgenden BatchCode
@echo off & setlocal

set Quelle="D:\test\regausgabe.txt"  
set Ausgabe="D:\test\MeineAusgabe.txt"  
for /f "tokens=2 delims=:" %%i in ('findstr "ProductName	REG_SZ	" %Quelle%') do set Wert=%%i  
set SoftwareName=%Wert:~1,8%

echo %SoftwareName%>> %Ausgabe% 
endlocal

aber alles was in der MeineAusgabe.txt steht ist WINDOWS\

Hoffe ein Batchspezi kann mir helfen.

gruss 01-01-01

Content-Key: 118010

Url: https://administrator.de/contentid/118010

Ausgedruckt am: 29.03.2024 um 15:03 Uhr

Mitglied: bastla
bastla 11.06.2009 um 19:41:23 Uhr
Goto Top
Hallo 01-01-01!

Versuch's so:
@echo off & setlocal

set Quelle="D:\test\regausgabe.txt"  
set Ausgabe="D:\test\MeineAusgabe.txt"  
for /f "tokens=2*" %%i in ('findstr /c:"ProductName    REG_SZ" %Quelle%') do >>%Ausgabe% echo %%j  
Grüße
bastla
Mitglied: 77575
77575 11.06.2009 um 20:29:59 Uhr
Goto Top
hi bastla,

super, vielen dank.
auch wenn ich die tokens und delims nie verstehen werde face-wink

hier das komplette test script, falls mal jemand vor dem selben problem steht.

@echo off & setlocal

set tmpFile="%temp%\uninst.tmp"  
set Ausgabe="%temp%\software.txt"  
reg query  HKLM\SOFTWARE\Classes\Installer\Products /s >%tmpFile%

for /f "tokens=2*" %%i in ('findstr /c:"ProductName	REG_SZ	" %tmpFile%') do >>%Ausgabe% echo %%j  

:: aufräumen
del /Q %tmpFile%
set tmpFile=
set Ausgabe=

:: schau 'ma mal was das ergebnis is 
start notepad.exe %Ausgabe%
Mitglied: bastla
bastla 11.06.2009 um 20:47:45 Uhr
Goto Top
Hallo 01-01-01!

Freut mich, wenn's passt ... face-smile

auch wenn ich die tokens und delims nie verstehen werde face-wink
Standard-Delimiter sind Leerzeichen und TAB (daher muss hier auch gar kein spezielles Trennzeichen angegeben werden), und was die "tokens" angeht: bis 3 zählen kannst Du doch, und mehr passiert hier auch nicht face-wink:
ProductName REG_SZ Microsoft Software Update for Web Folders (English) 12
^ Token 1 ^ ^ T2 ^ ^ Token * = alles nach 2 ohne weitere Unterteilung   ^
^ignoriert^ ^%%i ^ ^ %%j                                                ^
Grüße
bastla