hellburn01

Nach String in Textdateien suchen

Moin zusammen,

ich habe ein Problem mit einer Batch Programmierung.
Die Aufgabe lautet folgendermaßen:
Ich habe mehrere .txt Dateien, welche alle in einem Verzeichnis und Unterordnern davon liegen. Diese sollen durchsucht werden nach zwei verschiedenen Strings "XXX" und "YYY".
Die Zeilen, in denen einer der beiden Strings enthalten ist, soll in einer neuen Textdatei niedergeschrieben werden.
Diese Ausgabedatei soll, wenn möglich, den Namen der durchsuchten Datei + Info, also als Beispiel "342vb0 - Info" tragen und im gleichen Verzeichnis abgelegt werden, wie die ursprüngliche Datei.
Und, es soll für jede durchsuchte Datei eine eigene Ausgabedatei erstellt werden.

Ich weiß, dass das ziemlich viele Anforderungen sind, aber ich bin der Meinung, dass das soweit möglich sein sollte.

Ich habe es versucht mit
 findstr /s /c:"XXX;" *.txt > ausgabe_XXX.txt  
findstr /s /c:"YYY" *.txt > ausgabe_YYY.txt   

Damit bekomme ich in einer Ausgabedatei alle Zeilen - welche meinen gesuchten String enthalten - inklusive des Dateinamens der durchsuchten Datei.
Beispielhaft: 6309v000.txt: YYY ; T01 HierStehtText
Optimale Ausgabe für mich wäre in der Datei 6309v000_Info.txt Zeilenweise die Informationen YYY; T01 HierStehtText

Ich bin leider, was Batch Programmierung anbelangt nicht so fit, wäre also sehr froh, wenn mir jemand helfen könnte.

Viele Grüße
Auf Facebook teilen
Auf X (Twitter) teilen
Auf Reddit teilen
Auf Linkedin teilen

Content-ID: 578467

Url: https://administrator.de/forum/nach-string-in-textdateien-suchen-578467.html

Ausgedruckt am: 29.04.2025 um 16:04 Uhr

144260
Lösung 144260 11.06.2020 aktualisiert um 10:28:41 Uhr
Goto Top
MoinMoin.
Unsere Suche zu benutzen scheint schon eine echte Herausforderung zu sein, zumal das Thema gefühlt 100 mal die Woche hier aufschlägt ...
@echo off
set "folder=D:\Ordner"  
set "searchterms=XXX YYY"  
set "fileinfo=342vb0 - Info"  
for /f "delims=" %%a in ('findstr /ilsm "%searchterms%" "%folder%\*.txt"') do (  
	findstr /il "%searchterms%" "%%a" >"%%~dpna_%fileinfo%%%~xa"  
)
Als denn
k.
Hellburn01
Hellburn01 11.06.2020 um 10:37:18 Uhr
Goto Top
Erst mal besten Dank killpid, ich hatte die Suche genutzt und verschiedene Codeschnipsel ausprobiert, aber durch die Fehlende Erfahrung wusste ich dann oftmals einfach nicht, wo ich was ersetzen muss, damit es zu meinem Problem passt.

Die Ausgabe in einzelnen Textdokumenten funktioniert super und ist auch genau das, was ich mir erhofft hatte.
Das Sahnehäubchen wäre jetzt, wenn ich die Ausgabe noch etwas "beschneiden" könnte.

Aktuell ist die Ausgabe: N001 XXX ; T0815 HierStehtText
Perfekt für mich wäre, wenn ich es auf das T0815 HierStehtText kürzen könnte.

Kann ich das bei dem zweiten findstr einbauen?

Grüße
144260
Lösung 144260 11.06.2020 aktualisiert um 10:51:37 Uhr
Goto Top
@echo off
set "folder=D:\Ordner"  
set "searchterms=XXX YYY"  
set "fileinfo=342vb0 - Info"  
for /f "delims=" %%a in ('findstr /ilsm "%searchterms%" "%folder%\*.txt"') do (  
	>"%%~dpna_%fileinfo%%%~xa" (for /f "tokens=2 delims=;" %%b in ('findstr /il "%searchterms%" "%%a"') do echo.%%b)  
)
Penny.Cilin
Penny.Cilin 11.06.2020 um 10:56:19 Uhr
Goto Top
Zitat von @Hellburn01:

Ich bin leider, was Batch Programmierung anbelangt nicht so fit, wäre also sehr froh, wenn mir jemand helfen könnte.
Hm, von nichts kommt nichts. Ja, es ist allgemein bekannt, das Batcherstellung sehr mühsam sein kann / ist.
Ein bißchen hast Du ja schon.
Und hier etwas Lesefutter bzgl. Windows Batch:

Viele Grüße