Wie der Titel sagt, wie kann ich eine Verzeichnisstruktur rekursiv kopieren, aber nur einige Dateien einschließen? ZB bei folgender Verzeichnisstruktur:
folder1
folder2
folder3
data.zip
info.txt
abc.xyz
folder4
folder5
data.zip
somefile.exe
someotherfile.dll
Die Dateien data.zip und info.txt können überall in der Verzeichnisstruktur angezeigt werden. Wie kann ich die vollständige Verzeichnisstruktur kopieren, aber nur Dateien mit den Namen data.zip und info.txt einschließen (alle anderen Dateien sollten ignoriert werden)?
Die resultierende Verzeichnisstruktur sollte folgendermaßen aussehen:
copy_of_folder1
folder2
folder3
data.zip
info.txt
folder4
folder5
data.zip
*.zip
für mich gearbeitet.Eine alternative Lösung, die jeweils eine Datei kopiert und keine ROBOCOPY erfordert:
Die äußere for-Anweisung generiert eine mögliche Pfadkombination aus Unterverzeichnis in
SOURCE_DIR
und Name inFILENAMES_TO_COPY
. Für jede vorhandene Datei wird xcopy aufgerufen.FILE_INTERMEDIATE_DIR
Enthält den Unterverzeichnispfad der Datei, inSOURCE_DIR
dem erstellt werden mussDEST_DIR
.quelle
set FILENAMES_TO_COPY=data.zip info.txt
oben geändert inset FILENAMES_TO_COPY=*.jpg
set "SOURCE_DIR=C:\Origin Test"
undset "DEST_DIR=C:\Dest Test"
. Beachten Sie die Platzierung der doppelten Anführungszeichen.Versuchen Sie, die Ausgabe von find (dh den Dateipfad) in cpio zu leiten
cpio überprüft den Zeitstempel für Zieldateien - so ist es sicher und schnell.
entferne -v für eine schnellere Operation, sobald du dich daran gewöhnt hast.
quelle
Wenn Powershell eine Option ist, können Sie dies tun:
Der Hauptnachteil besteht darin, dass alle Ordner kopiert werden, auch wenn sie leer sind, da keine Dateien mit dem von Ihnen angegebenen Filter übereinstimmen. So könnten Sie zusätzlich zu den wenigen Ordnern, die die gewünschten Dateien enthalten, einen Baum voller leerer Ordner erhalten.
quelle
rm -r -ErrorAction:SilentlyContinue d:\destinationPath
vor dem Kopieren ausgeführt werden, um dies zu beheben.Dank vorheriger Antworten. :) :)
Dieses Skript mit dem Namen "r4k4copy.cmd":
Es akzeptiert die Variablen "Quelle", "Ziel" und "Dateiname". Es kann auch nur bestimmte Dateitypen oder ausgewählte Dateinamen kopieren.
Jede Verbesserung ist willkommen. :) :)
quelle
Nur mit find und cp:
quelle
Ähnlich wie bei Paulius 'Lösung, aber die Dateien, die Sie nicht interessieren, werden nicht kopiert und dann gelöscht:
quelle
So kopieren Sie alle Textdateien nach G: und behalten die Verzeichnisstruktur bei:
quelle
Das sind nur zwei einfache Befehle, aber ich würde dies nicht empfehlen, es sei denn, die Dateien, die Sie NICHT kopieren müssen, sind klein. Dies liegt daran, dass dadurch ALLE Dateien kopiert und dann die Dateien entfernt werden, die in der Kopie nicht benötigt werden.
Sicher, der zweite Befehl ist ziemlich lang, aber er funktioniert!
Außerdem müssen Sie für diesen Ansatz keine Tools von Drittanbietern herunterladen und installieren (Windows 2000+ BATCH verfügt über genügend Befehle dafür).
quelle
Unter Linux und anderen UNIX-Systemen ist die Verwendung des
tar
Befehls problemlos möglich.Dann würden Sie zum Ziel cwd und:
Natürlich können Sie die Ausgabe vom ersten Teer in den zweiten leiten, aber es ist einfacher zu verstehen und zu erklären, wie sie schrittweise funktioniert. Ich vermisse die erforderliche CD / to / new / path / im folgenden Befehl - ich kann mich nur nicht erinnern, wie es jetzt geht. Jemand anderes kann es hoffentlich hinzufügen.
Tar (gnutar) ist auch unter Windows verfügbar, aber ich würde die
xcopy
Methode wahrscheinlich selbst auf dieser Plattform verwenden.quelle
BEARBEITEN: Wenn Sie die leeren Ordner beibehalten möchten (die Sie beim erneuten Lesen Ihres Beitrags scheinbar verwenden), verwenden Sie / E anstelle von / S.
quelle
Über die WinRAR-Befehlszeilenschnittstelle können Sie die Dateinamen und / oder Dateitypen in ein Archiv kopieren. Dann können Sie dieses Archiv an einen beliebigen Ort extrahieren. Dadurch bleibt die ursprüngliche Dateistruktur erhalten.
Ich musste meinem Handy fehlende Albumbilddateien hinzufügen, ohne die Musik selbst erneut kopieren zu müssen. Glücklicherweise war die Verzeichnisstruktur auf meinem Computer und meinem Handy dieselbe!
Ich benutzte:
Dadurch wurde ein Archiv mit allen Folder.jpg-Dateien in den entsprechenden Unterverzeichnissen erstellt.
Diese Technik kann auch zum Kopieren von Dateitypen verwendet werden. Wenn alle Dateien unterschiedliche Namen haben, können Sie alle Dateien in ein einziges Verzeichnis extrahieren. Zusätzliche Befehlszeilenparameter können mehrere Dateitypen archivieren.
Weitere Informationen finden Sie in diesem sehr hilfreichen Link http://cects.com/using-the-winrar-command-line-tools-in-windows/
quelle
Für Benutzer von Altap Salamander (Dateimanager mit 2 Bedienfeldern): Geben Sie in den Optionen des Popups " Kopieren" einfach die Dateinamen oder Masken an. Einfach.
quelle
Ich bin in Ordnung mit regulären Ausdrücken, faul und abgeneigt von Installationen, also habe ich eine Batch-Datei erstellt, die das Verzeichnis erstellt und mit Vanilla-DOS-Befehlen kopiert. Scheint mühsam, aber schneller für mich als das Ausarbeiten einer Robokopie.
(.*)
ersetzt Zeichenfolge"\1"
und klicken Sie auf Alle ersetzen(.*)
Ersetzungszeichenfolgemd qqq\1\nxcopy \1 qqq\1\n
und klicken Sie auf Alle ersetzen\\([^\\^"]+)"\n
ersetzen\\"\n
A:\src
undB:\dest
). Deaktivieren Sie reguläre Ausdrücke, suchen Sieqqq"A:\src\
ErsetzenB:\dest\
und klicken Sie auf Alle ersetzen.md erstellt verschachtelte Verzeichnisse. copy würde sich in diesem Beispiel wahrscheinlich identisch mit xcopy verhalten. Möglicherweise möchten Sie / Y zu xcopy hinzufügen, um Überschreibbestätigungen zu unterdrücken. Sie erhalten eine Batch-Datei wie folgt:
wird für jede Datei in Ihrer ursprünglichen Liste wiederholt. Getestet auf Win7.
quelle
Um dies mit Drag & Drop mit winzip zu tun, gibt es eine Option zum Beibehalten der Verzeichnisstruktur. Erstellen Sie einfach eine neue ZIP-Datei auf Verzeichnisebene, die Ihr Stammverzeichnis ist, und ziehen Sie die Dateien hinein.
quelle