knechtibus
Goto Top

Gefundene Objekte der Volltextsuche in eine Datei kopieren

Hallo zusammen,

mein Problem ist es aus einer Datei bestimmte Strings auszulesen und diese dann in eine andere Datei zu schreiben. Evtl. hilft ein Beispiel zum besseren Vertändnis.

In einer Datei quelle.txt stehen folgende Daten:

12.03.2009[umi] .-name=L010 12.03.2009[877] .-name=L013
12.03.2009[896] .-name=L011
14.03.2009[cab] .-name=L012 19.03.2009[cvb] .-name=L014

Jetzt würde ich gerne alle Strings mit dem Format "name=Lxxx" in eine Datei ausgabe.txt kopieren. Die Datei ausgabe.txt soll dann folgendermaßen aussehen:

name=L010
name=L013
name=L011
...
...

Sozusagen eine Volltextsuche bei der alle Treffer in eine Datei kopiert werden. Ich hab schonmal ein bisschen mit dem Befehl "findstr" rumprobiert, kam aber leider auf kein zufriedenstellendes Ergebnis. Dieser Befehl konnte mehrere Treffer in einer Zeile irgendwie nicht richtig anzeigen.

Freue mich auf eure Antworten.

Mit freundlichen Grüßen
knechtibus

Content-Key: 112150

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

Printed on: April 20, 2024 at 03:04 o'clock

Member: paulepank
paulepank Mar 23, 2009 at 15:06:10 (UTC)
Goto Top
Hallo knechtibus,
wenn du bereit bist mit einem externen Tool zu arbeiten dann so:
1. Kopiere dir aus den unxutils das Tool Tr.exe in den entsprechenden Pfad.
2. folgenden Code in eine Batch eingeben.
@echo off
if exist name.txt del name.txt
for /f %%i in ('type quelle.txt^|tr "." "\n"^|tr -d -^|findstr name') do echo %%i >>name.txt  

cu paulepank
Member: knechtibus
knechtibus Mar 24, 2009 at 07:18:36 (UTC)
Goto Top
Hallo paulepank,

hab deine Lösung gerade mal ausprobiert und sie funktioniert wirklich einwandfrei. Wollte die gleiche Batch, minimal verändert, nun auch für ein anderes Problem einsetzen aber das klappt leider nicht so richtig. Die Daten in der quelle2.txt liegen nun wie folgt vor:

L015 <<A_BC_D1-1 D:\ab\cd\ef.stk L016 <<A_BC_D1-1 D:\ab\cd\gh.stk

Habe folgendes veruscht:

@echo off
if exist name2.txt del name2.txt
for /f %%i in ('type quelle2.txt^|tr "." "\n"^|tr -d -^|findstr L0.') do echo %%i >>name2.txt

Jetzt schreibt er mir aber leider immer die Dateiendungen, bzw. was unmittelbar vor dem Ausdruck Lxxx steht, "stk" in die name2.txt und nicht wie ich es will den Ausdruck "Lxxx".

Was müsste ich an deiner Lösung verändern damit es auch bei dieser Quelldatei funktioniert?

Freue mich auf deine Antwort.

Mit freundlichen Grüßen
knechtibus
Member: paulepank
paulepank Mar 24, 2009 at 08:53:07 (UTC)
Goto Top
Moin knechtibus,

die Lösung für Quelle1 beruht auf einer Analyse der Datenstruktur von Quelle1.
Für Quelle2 sieht es so aus (vorausgesetzt weitere Datensätze unterliegen dem gleichen Muster):
@echo off
if exist name2.txt del name2.txt
for /f %%i in ('type quelle2.txt^|tr " " "\n"^|findstr L0') do echo %%i>>name2.txt  

Anmerkung:
würdest du bitte in Zukunft deinen Code und die Datenbeispiele formatieren ?
Siehe Formatting instructions in the posts

cu paulepank
Member: knechtibus
knechtibus Mar 24, 2009 at 09:52:48 (UTC)
Goto Top
Hallo paulepank,

vielen Dank! Batch funktioniert nun ohne Probleme. Werde in Zukunft die Formatierung benutzen, fördert die Übersichtlichkeit ungemein.

Mit freundlichen Grüßen
knechtibus