[BATCH] Dateien kopieren

Habbi

Well-known member
5 September 2008
52
2
Hi,
ich versuche per Batch-Datei Dateien von x nach y zu kopieren. Ich durchsuche zuerst das Verzeichnis nach den Dateien (z.B. doc) und versuche sie anschließend zu kopieren. Dabei habe ich allerdings eon Problem:
Es Kopiert nix weil ich in der For en Fehler drinne hab, den ich nid find :/

Code:
dir /s | find /i ".doc" > C:\Temp.txt
For /F "Delims=" %N in (C:\Temp.txt) do xcopy /Y /D %%N C:\
 
In der Temp.txt stehen die Pfade wahrscheinlich mit Slashs
die du escapen musst ... :think:

Und die Anführungszeichen im For übrigens auch.
 
Ich gehe mal davon aus, dass Du die Textdateien nur als "Zwischenspricher" nutzt.
So wäre es der direkte Weg ...
Code:
For /F "Delims=" %i in ('dir *.doc /b /s') do copy "%i" C:\


Der Fehler bei Dir ist einfach nur, dass Du bei dem Dir kein "/b" (bare format ohne Überschrift und andere unütze Informationen) gesetzt hast. Dann noch eine Kleinigkeit mit "%" und "%%" und dann solltest Du die Variable, in der der Dateiname zum kopieren steht, immer in """" setzen, da Du sonst Probleme bei Leerzeichen im Pfad/Dateinamen bekommst.
So müsste es auch funktionieren ...
Code:
dir /s /b | find /i ".doc"> C:\Temp.txt 
For /F "Delims=" %N in (C:\Temp.txt) do xcopy /Y /D "%N" C:\
 
Zuletzt bearbeitet:
Danke für die Antworten...aber leider funktionierts immer noch nich :/ Das is doch echt zum Haare raufen XD
 
Lol, tatsache in der cmd gehts 8O
Sobald ichs in ne Datei schreiben will (.bat oder .cmd) erstellt er mir zwar die temporäre textdatei, aber irgendwie kopiert der mir naher nix...
 
Sobald ichs in ne Datei schreiben will (.bat oder .cmd) ...

Achso =)
Wenn Du eine Batch_datei erstellst, wird jedes doppelte % Zeichen in ein einfaches übersetzt. Letztendlich kommt also der gleiche Befehl dabei raus, nur dass bei Batch-Dateien eben %% vorgeschrieben sind.

Code:
dir /s /b | find /i ".doc"> C:\Temp.txt 
For /F "Delims=" %[B]%[/B]N in (C:\Temp.txt) do xcopy /Y /D "%[B]%[/B]N" C:\

Und wieso gehst Du nicht den direkten Weg (da muss aber für die cmd-datei aber auch ein % dazu) ohne die Textdatei als Zwischenspeicher ? Ist doch sauberer ...
 
Zuletzt bearbeitet:
En dickes Dankeschön von mir. Es funktioniert :)

Ich mach das mit der temporären Datei, weil ich mehr als eine Dateiendung hab und zu kopierenden Dateien dann einfach mit >> in eine temporäre Datei schreiben wollte. In einem Punkt haste recht, eig könnt ichs auch über den sauberen Weg machen und dann einfach mehr als eine Forschleife nehmen.
Auf die Idee bin ich am Anfang gar nicht gekommen XD
Bin ja eher jmd der mit PL/SQL, C, Assembler und manchmal auch Java arbeitet. Da hab ich leider nich soooooo viel Ahnung von Batch-Dateien. Die Syntax is echt gewöhnungsbedürftig und irgendwie find ichs auch seltsam dass man mit einer Zeile (For) soviel machen kann 8O Ich lös das ja normalerweise lieber "zu Fuß" (wahrscheinlich bin ich deshalb nich auf die Idee gekommen das auf die saubere Art zu machen):D
 
Lol, cool XD
Mit ner Batch kann man wohl echt alles anstellen :D
 
Zuletzt bearbeitet:
Wahhh XD

Okay, ich brauch nochmal kurz Hilfe:
Ich hab dummerweise versteckte Ordner. Wenn jetzt nur die Datei versteckt ist funktioniert das kopieren ja mit /H. Aber sobald der ganze Ordner versteckt ist gehts gar nimmer :/

Code:
For /F "Delims=" %%N in ('dir Testdokument.txt /A:h /s /b') do xcopy /Y /H /D "%%N" C:\

Also das Testdokument befindet sich im Moment in nem versteckten Ordner. In der Hilfe mit dir/? oder xcopy/? find ich leider nix :(

Öh....jetz gehts...XD
 
Zuletzt bearbeitet: