Antworten
Angenommen, Sie haben ein Zielverzeichnis (C: \ Target) und alle TXT-Dateien befinden sich unter dem Verzeichnis C: \ Tree. Mit dem folgenden Befehl erhalten Sie eine Liste aller TXT-Dateien und kopieren diese in die gewünschten Dateien Ziel:
for /F "delims=" %a in ('dir /s /b "C:\Tree\*.txt" ') do (copy "%a" "C:\Target")
Ich setze doppelte Anführungszeichen um Parameter, die Leerzeichen enthalten können.
Erläuterung
for /F
Führt einen Text für die Schleifenanalyse aus. Standardmäßig werden Token für Leerzeichen in die Variablen% a,% b,% c usw. aufgeteilt. Da wir dieses Verhalten nicht wünschen, habe ich Folgendes angegeben:
"delims="
Was bedeutet keine Trennzeichen. % a ist die Variable, die jede Textzeile aus der Ausgabe unseres Befehls enthält. Der Befehl, den ich verwendete, war:
dir /s /b "C:\Tree\*.txt"
Dies führt eine Verzeichnisliste aller Dateien aus, die mit * .txt unter dem Ordner C: \ Tree übereinstimmen. Das Flag / s führt eine rekursive Suche in allen Unterverzeichnissen / Unterordnern durch. Das Flag / b gibt die Auflistung in einem "bloßen" Format aus, das im Grunde nur die Datei und den Pfad aufführt. Die Ausgabe sieht folgendermaßen aus:
C:\Tree\animals\hippopotamus.txt C:\Tree\animals\lion.txt C:\Tree\animals\dog\poodle.txt C:\Tree\animals\dog\terrier.txt C:\Tree\food\fruit\apple.txt C:\Tree\food\fruit\orange.txt C:\Tree\food\vegetables\borcolli.txt C:\Tree\food\vegetables\carrot.txt C:\Tree\food\vegetables\corn.txt
Und natürlich:
copy "%a" "C:\Target"
Kopiert die durch die Variable% a angegebene Datei in das Verzeichnis C: \ Target. Die for-Schleife führt im Wesentlichen die folgenden Befehle aus:
copy "C:\Tree\animals\hippopotamus.txt" "C:\Target" copy "C:\Tree\animals\lion.txt" "C:\Target" copy "C:\Tree\animals\dog\poodle.txt" "C:\Target" copy "C:\Tree\animals\dog\terrier.txt" "C:\Target" copy "C:\Tree\food\fruit\apple.txt" "C:\Target" copy "C:\Tree\food\fruit\orange.txt" "C:\Target" copy "C:\Tree\food\vegetables\borcolli.txt" "C:\Target" copy "C:\Tree\food\vegetables\carrot.txt" "C:\Target" copy "C:\Tree\food\vegetables\corn.txt" "C:\Target"
Weitere Hilfe zu DIR-Optionen oder FOR-Schleifen in der Windows-Eingabeaufforderung (CMD) können Sie help dir
oder eingeben help for
. Achtung, die FOR-Schleife-Hilfeseite ist recht langwierig. ;)