xcopy Dateien in ein einzelnes Verzeichnis

26012
bobobobo

Ich möchte xcopy auf einem Windows-Computer verwenden, um alle Dateien mit der Erweiterung .png in ein einziges Verzeichnis zu ziehen.

Ich habe es versucht xcopy C:\folder\*.png /s C:\png\, aber es enthält die Unterverzeichnisse im Ordner \ (zB in C: \ png gibt es C: \ png \ a \ b \ c \ img.png), was ich nicht möchte. Ich möchte einfach alle .png-Dateien in C: \ png haben, ohne dass die Verzeichnisstruktur im Ordner C: \ beibehalten wird.

17
Versuchen Sie Folgendes: http://www.pcworld.com/article/2105149/gather-similar-files-von-multiple-folders-and-copy-them-in-one-simple-step.html CrakC vor 9 Jahren 0

2 Antworten auf die Frage

30
Joey

Dies kann mit gutem alt gemacht werden for:

for /r C:\Folder %f in (*.png) do @copy "%f" C:\png 

Nichts Außergewöhnliches.

Es klappt! Möchten Sie erklären, wofür "% f" steht? bobobobo vor 14 Jahren 0
Es ist die Schleifenvariable. Joey vor 14 Jahren 0
Dies funktionierte nicht für mich, ich hatte etwas mit der Wirkung von "f" war zu diesem Zeitpunkt unerwartet ". Das Ändern von"% f "in" %% f "hat funktioniert. Allerdings habe ich dies in einer Batch-Datei ausgeführt: * Wenn Sie den Befehl FOR in der Befehlszeile und nicht in einem Stapelverarbeitungsprogramm verwenden, verwenden Sie nur ein Prozentzeichen:% G anstelle von %% G. * Http://ss64.com/nt/for.html ta.speot.is vor 9 Jahren 2
Ja, ja. Das wird erwartet und genauso wie Sie es zitiert haben. Wo würde ich Ihre Verwirrung herkommen? Joey vor 9 Jahren 1
Es gibt ein paar spezielle Variablen, die Sie wahrscheinlich bei der Zuweisung vermeiden möchten. In diesem Fall hat Joey die Variablenbezeichnung von * f * für `% f 'festgelegt, was in Ordnung sein sollte. Der einfachste Weg, um sicher zu gehen, ist die Verwendung von Großbuchstaben. "%% d" _might_ kann zu Problemen führen, aber "%% D" ist in Ordnung. Stellen Sie einfach sicher, dass Sie für jede verschachtelte for-Schleife unterschiedliche Variablen verwenden. = kayleeFrye_onDeck vor 7 Jahren 0
@ KayleeFrye_onDeck: Soweit ich weiß gibt es keine speziellen Variablen. Das Einzige, was mir einfällt, ist, dass Personen, die mit "for" nicht vertraut sind, sich über die beiden verschiedenen "d" in Dingen wie "% ~ dd" verwirren können. Die "for" -Dokumentation schlägt vor, Variablen für die Verwendung von Großbuchstaben zu verwenden, um Verwirrung zu vermeiden. Ersetzungen lassen sich jedoch immer noch deutlich vom Variablennamen unterscheiden. Joey vor 7 Jahren 1
Ehrlich gesagt, habe ich mir nicht die Mühe gemacht, Eckfälle zu schaffen, um es zu brechen. Aber ja, wahrscheinlich nur, um Verwirrung zu beseitigen. Im Allgemeinen möchte ich die Buchstaben nicht einmal für die Batchparametererweiterung verwenden, z. B. "d", "n", "x", "f", "p", "s", "a", "t" und "z", sogar in Großbuchstaben. Ich verwende auch gerne nur Großbuchstaben, da es zumindest für mich einfacher ist, die Verwendung der Batch-Parametererweiterung zu erkennen. kayleeFrye_onDeck vor 7 Jahren 0
0
David Spillett

Wenn Sie cygwin installiert haben, ist dies eine Aufgabe für find:

cp `find /cygdrive/c/folder/* -name '*png'` /cygdrive/c/png/ 

(Dies kann jedoch zu Problemen führen, wenn einer der Dateinamen Leerzeichen enthält. Es gibt jedoch eine Variante eines findBefehls, die unter allen Umständen funktioniert.)

Wenn Sie mit Vista, 2003 oder 2008 arbeiten, sind die weniger flexiblen, aber dennoch nützlichen "Forfiles" Ihr Freund. So etwas wie:

FORFILES /P c:\folder\ /M *.png /S /C "cmd /c copy @file c:\png\" 

Hinweis: Ich habe keinen der obigen Befehle getestet, aber theoretisch sollten sie funktionieren ...

+1 hat gerade bestätigt, dass der Befehl FORFILES funktioniert. Ich habe es zweimal ausgeführt und das zweite Mal ohne Aufforderung kopiert. Ich gehe davon aus, dass es überschrieben wird, wenn es Duplikate findet. hyperslug vor 15 Jahren 0