nolle99
Goto Top

Wert in einer TXT Datei suchen

Hallo Leute Ich habe ein Problem
Ich habe mir von meiner Seite alle URLs in einer TXT gespeichert (30.000 Zeilen). Die Datei besteht aus 5 Spalten und ist Tabstopp getrennt.

Alles was ich brauche ist ein batch Script das mir aus der ersten Spalte alle URLs in eine neue Datei speichert die in der URL ein /user/ haben.

Kann mir jemand helfen??? Ich habe von batch keine Ahnung ein Freund meinte nur damit müßte sowas gehen.

DANKE
Nolle

Content-ID: 311017

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

Ausgedruckt am: 24.11.2024 um 06:11 Uhr

AlbertMinrich
AlbertMinrich 27.07.2016 aktualisiert um 21:43:36 Uhr
Goto Top
Hallo

Hab's mal getestet mit einer Datei test.txt mit diesem Inhalt
dsflkl l/user/	kklkm	mkmk	bhbh	kjnk+
kmlkmlks	kmlkmlkm	m kjkl	kjlkj	buhbjhb
/user/klkml	lkm	zt	rt	tctc

Eine batch-Datei mit dieser Zeile
for /F "tokens=1 delims=	" %%i in (test.txt) do echo %%i | find "/user/" && echo %%i >> ausgabe.txt  

führt zu diesem Inhalt in der Datei ausgabe.txt
dsflkl l/user/ 
/user/klkml



Gruß
Martin
SeaStorm
SeaStorm 28.07.2016 um 07:55:15 Uhr
Goto Top
Wenn du das nicht immer wieder, sondern nur einmalig brauchst, würde ich die Daten kurz ins excel kippen, dann auf der ersten Spalte Filtern und das Resultat rauskopieren ....
nolle99
nolle99 02.08.2016 um 11:18:12 Uhr
Goto Top
Klappt super DANKE schon mal. Das Problem ist jetzt nur das ich nicht nur eine Datei.txt mehr haben sondern mittlerweile einen ordner voll. Gibt es die Möglichkeit alle Datein vorher zusammen zufassen??

Ich habe mal stattt test.txt *.txt probiert aber dann kommt nur die Meldung die Datei nicht gefunden werden kann.
Biber
Biber 02.08.2016 um 13:30:16 Uhr
Goto Top
Moin nolle99,

in der FOR /F-Anweisung sind keine Wildcards erlaubt.
Da musst du um die vorhandene FOR/F-Anweisung noch eine weitere FOR-Anweisung drumwickeln
Sinngemäß:
FOR /F %%a in (D:\Ein\Pfad\*.txt) DO (
 for /F "tokens=1 delims=	" %%i in ("%%a") do echo %%i | find "/user/" && echo %%i >> ausgabe.txt  
)
Wie gesagt, sinngemäß.

Wenn diu mehrere Dateien verarbeitest, willst du möglicherweise in deiner Datei Ausgabe.txt nicht nur den gefundenen Suchstring, sondern auch die enthaltende Datei mit tracken. Dann musst du den echo-Teile anpassen/ergänzen.

Oder du nimmst statt der äußeren FOR-Anweisung lieber erstmal eine FindStr /M-Anweisung, die dir die Namen aller Dateien liefert, die den Suchstring "/user/" enthalten.
So oder so brauchst du aber für die FOR /F-Anweisung irgendein Konstrukt, welches dir die Dateinamen einzeln und zeilenweise als Input liefert.

Grüße
Biber
nolle99
nolle99 02.08.2016 um 17:28:26 Uhr
Goto Top
coole Sache werde ich gleich zuhause ausprobieren. Kannst du mir sagen wie ich generell einfach solte txt dateien zusammenfügen kann. Also einfach alle Spalten von datei32343.txt sowie datei34314124.txt etc???
129813
129813 02.08.2016 aktualisiert um 18:29:17 Uhr
Goto Top
Hi,
Zitat von @nolle99:
coole Sache werde ich gleich zuhause ausprobieren. Kannst du mir sagen wie ich generell einfach solte txt dateien zusammenfügen kann. Also einfach alle Spalten von datei32343.txt sowie datei34314124.txt etc???
copy datei32343.txt + datei34314124.txt merged.txt
or for all files in a folder
copy *.txt merged.txt

Regards
nolle99
nolle99 02.08.2016 um 18:24:24 Uhr
Goto Top
nein ich meine das er automatisch alle .txt Dateien in einem Ordner nimmt. Bei dem Beispiel muß man ja die einzelnen Dateinamen eingeben.
129813
129813 02.08.2016 aktualisiert um 18:28:26 Uhr
Goto Top
Zitat von @nolle99:
Bei dem Beispiel muß man ja die einzelnen Dateinamen eingeben.
No that's not correct, see the second example above face-smile *.txt
nolle99
nolle99 02.08.2016 um 18:30:47 Uhr
Goto Top
FOR /F %%a in (D:\Ein\Pfad\*.txt) DO (
 for /F "tokens=1 delims=	" %%i in ("%%a") do echo %%i | find "/user/" && echo %%i >> ausgabe.txt  
)

klappt leider nicht.... ich bekomme immer wieder "Die Datei D:\Ein\Pfad\*.txt kann nicht gefunden werden face-sad den Pfad habe ich natürlich angepasst.
129813
129813 02.08.2016 aktualisiert um 18:43:00 Uhr
Goto Top
Because the /F in the first for loop is wrong
for %%a in ("D:\Ein\Pfad\*.txt") DO (  
 for /F "usebackq tokens=1 delims=	" %%i in ("%%~a") do (  
    >>ausgabe.txt  (echo %%i | find "/user/" && echo %%i)  
 )
)
micneu
micneu 15.08.2016 um 17:34:08 Uhr
Goto Top
welches system setzt du denn ein?
hast du ein linux?
awk -F "\t" '{ print $1 }'