ghostx
Goto Top

Xcopy funktioniert nicht

hallo Liebe Leute,

möchte in einer Batch-Datei mittels xcopy Dateien von a nach b kopieren. Das knifflige an der Sache ist, dass im Quellverzeichnis Unterordner bis 4 Ebenen vorhanden sind. Ich möchte von allen Ordnern und Unterordnern (und unterunterordnern... ;)) einen bestimmten Dateityp ins Zielverzeichnis kopieren, also nur die Dateien ohne Ordner. Das funktioniert aber leider nicht. Es wird nur eine Datei kopiert, und zwar die was in der ersten Ebene liegt. Ich dachte mit dem for-Parameter /r sollte das funktioniert. Was fehlt denn hier noch?

for /r "x:\Quelle" %%a in (*.dat) do xcopy /d "c:\Ziel"  

Hinweis: Das Quellverzeichnis ist ein Netzlaufwerk, vorher hatte ich ein UNC-Pfad benutzt, aber damit hats überhaupt nicht funktioniert

Content-ID: 234190

Url: https://administrator.de/forum/xcopy-funktioniert-nicht-234190.html

Ausgedruckt am: 23.12.2024 um 14:12 Uhr

AndreasHoster
Lösung AndreasHoster 01.04.2014 aktualisiert um 14:45:06 Uhr
Goto Top
Was fehlt:
Die Datei, die kopiert werden soll

Wenn ich das mal leicht abwandle in
for /r "x:\Quelle" %%a in (*.dat) do echo xcopy /d "c:\Ziel"  
dann bekomme ich als Ergebnis (habe mal 3 .Dat Dateien in Verzeichnisse gepackt):
C:\>echo xcopy /d "d:\temp\ziel"
xcopy /d "d:\temp\ziel"
C:\>echo xcopy /d "d:\temp\ziel"
xcopy /d "d:\temp\ziel"
C:\>echo xcopy /d "d:\temp\ziel"
xcopy /d "d:\temp\ziel"

Wie soll xcopy da wissen, was kopiert werden soll?

Auch wenn es dem Lerneffekt nicht dient, wenn man sofort die Lösung hinschreibt, aber probiers halt mal so:
for /r "x:\Quelle" %%a in (*.dat) do xcopy  "%%a" "c:\Ziel" /d  
ghostX
ghostX 01.04.2014 aktualisiert um 15:41:33 Uhr
Goto Top
Hi Andi,

danke für deine Hilfe. Die Variable hatte ich vorher drin, weiß garnicht warum ich die wieder raus hab. Bin übrigens nur ein Laie, hätte ich noch erwähnen sollen, aber war ja auch nicht zu übersehen :D

Hat jetzt so mit Netzlaufwerk als Quelle nicht funktioniert. Mit UNC-Pfad hats aber funktioniert genauso wie ich wollte.

Hätte noch eine Frage. Wie ist es wenn ich die Dateien in mehrere Zielordner verschieben möchte? Wäre das ein großer Aufwand den Script umzubauen? Es sind ca 10 Zielordner und ich möchte ungern für jeden Ordner einen separaten Batch starten.
AndreasHoster
AndreasHoster 02.04.2014 um 10:57:16 Uhr
Goto Top
Wenn die Ordnerstruktur auf dem Ziel genauso heißen soll wie in der Quelle kann man sich den ganzen Aufwand da oben sparen.
Das geht dann mit einem einzelnen robocopy.exe Befehl:
robocopy x:\quelle c:\ziel *.dat /S

Wenn Die Ordner unterschiedlich heißen, dann hilft nur für jeden Ordner einen separaten Aufruf (die Möglichkeit eine Textdatei zu parsen in der die Kombinationen aus Quelle und Ziel drinstehen spare ich mir jetzt mal).