michael1309
Goto Top

TXT Datei durchsuchen und kopieren

Hallo,
ich müsste in einigen 1000 txt Dateien bestimmte Dateien anhand von einem Suchstring (Buchstaben/Zahlen) raus filtern und dann in einen anderen Ordner Kopieren.
Aus einen Grund, den ich noch nicht weiß, klappt leider meine Batch nicht.
Hat jemand vllt eine Idee, wo der Fehler liegt?

@echo off
for %%x in (findstr /R /C:"%Suchstring%"c:\mailExtract\*.txt) do xcopy "%Suchstring%" "c:\gefunden"

Danke
Gruß
Michael

Content-Key: 161207

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

Printed on: April 19, 2024 at 22:04 o'clock

Member: pieh-ejdsch
pieh-ejdsch Feb 21, 2011 at 10:11:33 (UTC)
Goto Top
moin Michael,

wenn Du eine Anweisung einer Forschleife als Befehl haben möchtest, musst Du diese Anweisung mit
For /f "delims=" %i in ( ' Anweisung ' ) do ...
Ankündigen.

was steht in der Variable Suchstring?

beim findstr muss mindestens ein Leerzeichen zwischen Suchstring und Datei sein.

Gruß Phil
Member: michael1309
michael1309 Feb 21, 2011 at 10:23:14 (UTC)
Goto Top
Zitat von @pieh-ejdsch:

For /f "delims=" %i in ( ' Anweisung ' ) do ...

Moin Phil,
wie meinst du das mit dem Ankündigen?
Meine Batch Zeit ist schon was her.
Zum Testen haben ich

@echo off
set var=5
for %%x in (findstr /C:"%var%" "c:\mailExtract\*.txt") do xcopy "%var%" "c:\gefunden"
pause

genommen und eine TXT Datei mit einer 5 als Inhalt erstellt, die gefunden und kopiert werden soll.
Das passiert aber nicht. Habe den Eindruck, als würde nicht in der Datei gesucht sondern nur nach einer Datei.
Kann das sein?
Member: pieh-ejdsch
pieh-ejdsch Feb 21, 2011 at 10:45:06 (UTC)
Goto Top
die roten stellen in der Forschleife müssen bei einem Befehl unbedingt in der Forschleife Stehen.
also sowohl das /f für Funktion
als auch die umschließenden einfachen Hochkomma um den Befehl,
damit die Forschleife weis, was sie zu tun hat.

wenn Du genau wissen willst, was Dein Batch für Problemchen hat empfielt Timo immer (at)echo off oder batch4runaways part 0.0000001
aber mal zurück von der Theorie zu Thema:

 set "var=5"  
for %%x in ("c:\mailExtract\*.txt") do findstr /c:"%var%" "%%~x" >nul && xcopy "%%~x" "c:\gefunden"  

Gruß Phil
Member: michael1309
michael1309 Feb 21, 2011 at 10:55:34 (UTC)
Goto Top
super Danke, jetzt klappt es.
Werde mich da jetzt nochmal reinlesen.
Member: mustangdriver
mustangdriver Feb 21, 2011 at 13:55:58 (UTC)
Goto Top
@pieh-ejdsch: Cooler Tipp
Danke