ich möchte von einem verzeichnis in das andere nur bestimmte dateien, die sich in einer dateiliste befinden, verschieben
zb.
for %i in (*.txt) do findstr /F:B:\Tmp1\string.txt %i |move %i B:\Tmp2\
es funktioniert aber nicht
danke für die hilfe
Programmieren - alles kontrollieren 4.941 Themen, 20.715 Beiträge
Hi!
Ich denke, dass Problem ist, dass die Ergebnisliste von FINDSTR in eine Datei umgelenkt werden muss. Dann müsste MOVE diese Ergebnisdatei übergeben bekommen und dann selbst als Dateiliste auswerten. Ich meine MOVE kann aber keine Dateilisten auswerten.
IMHO stimmt auch die Syntax von FINDSTR nicht. Aus der Onlinehilfe von WinXP habe ich folgende Syntax aus der Referenz zu FINDSTR:
findstr /g:suchdat.txt /f:dateilst.txt > resultat.aus
Damit sucht FINDSTR die Begriffe der Datei suchdat.txt in der Dateiliste dateilst.txt. Das Ergebnis wird dann in resultat.aus abgelegt.
Über FOR könnte man dateilst.txt erzeugen, das Problem ist dann einen Ersatz für MOVE zu finden, der resultat.aus auswerten kann und die dort aufgeführten Dateien verschiebt.
Bis dann
Andreas
Versuche es mal so (Tmp1string.txt mit der dateiliste, B:Tmp2 als zielpfad und natürlich ohne echo):
FOR /F "delims=?" %i IN (Tmp1string.txt) DO echo move "%i" B:Tmp2
und in einer batchdatei:
FOR /F "delims=?" %%i IN (Tmp1string.txt) DO echo move "%%i" B:Tmp2
Bei delims= muss irgendein zeichen stehen, welches nicht in den dateinamen vorkommt und sinnvollerweise gilt das für die joker "?" und "*".
Es kann allerdings ein problem mit den nicht ASCII-zeichen geben (stichwort codepage). Eine erstellung der liste mit "dir /b>Tmp1string.txt" o.ä. ist darum empfehlenswert.
mr.escape
es hat funktioniert aber so:
for /F "delims=?" %%i in (String.txt) do move %%i B:\Tmp2\%%i
besten dank
kopi
Wenn B:\Tmp2 ein ordner ist, dann braucht man kein "\%%i" dort anhängen und wenn in String.txt die dateinamen mit kompletten pfaden vorhanden sind dann darf man kein "\%%i" anhängen. Bei beidseitig gültigen, relativen pfaden hingegen, ist die angaben erforderlich.
"B:Tmp2" ist übrigens eine relative pfadangabe zum aktuell gültigen verzeichnis auf laufwerk B. Wäre also gültig gewesen, wenngleich etwas unorthodox.
Auf die anführungszeichen beim move würde ich nicht verzichten, es sei denn ich bin mir sicher, dass keine leerstellen in den namen vorkommen.
mr.escape