Comme le titre l'indique, comment puis-je copier récursivement une structure de répertoires mais n'inclure que certains fichiers. Par exemple, étant donné la structure de répertoires suivante:
folder1
folder2
folder3
data.zip
info.txt
abc.xyz
folder4
folder5
data.zip
somefile.exe
someotherfile.dll
Les fichiers data.zip et info.txt peuvent apparaître partout dans la structure des répertoires. Comment puis-je copier la structure complète du répertoire, mais n'inclure que les fichiers nommés data.zip et info.txt (tous les autres fichiers doivent être ignorés)?
La structure de répertoires résultante devrait ressembler à ceci:
copy_of_folder1
folder2
folder3
data.zip
info.txt
folder4
folder5
data.zip
*.zip
j'ai travaillé pour moi.Une solution alternative qui copie un fichier à la fois et ne nécessite pas ROBOCOPY:
L'instruction for externe génère toute combinaison de chemin possible de sous-répertoire in
SOURCE_DIR
et name inFILENAMES_TO_COPY
. Pour chaque fichier existant, xcopy est appelé.FILE_INTERMEDIATE_DIR
contient le chemin du sous-répertoire du fichier dansSOURCE_DIR
lequel doit être crééDEST_DIR
.la source
set FILENAMES_TO_COPY=data.zip info.txt
ci-dessus enset FILENAMES_TO_COPY=*.jpg
set "SOURCE_DIR=C:\Origin Test"
etset "DEST_DIR=C:\Dest Test"
. Notez l'emplacement des guillemets doubles.essayez de rediriger la sortie de find (c'est-à-dire le chemin du fichier) dans cpio
cpio vérifie l'horodatage des fichiers cibles - c'est donc sûr et rapide.
supprimez -v pour une opération plus rapide, une fois que vous vous y êtes habitué.
la source
Si Powershell est une option, vous pouvez le faire:
Le principal inconvénient est qu'il copie tous les dossiers, même s'ils finiront par être vides car aucun fichier ne correspond au filtre que vous spécifiez. Vous pourriez donc vous retrouver avec une arborescence pleine de dossiers vides, en plus des quelques dossiers contenant les fichiers souhaités.
la source
rm -r -ErrorAction:SilentlyContinue d:\destinationPath
avant de copier pour résoudre ce problème.Merci aux réponses précédentes. :)
Ce script nommé "r4k4copy.cmd":
Il accepte les variables "Source", "Destination" et "FileName". Il ne peut également copier que le type spécifié de fichiers ou des noms de fichiers sélectifs.
Toute amélioration est la bienvenue. :)
la source
Avec find et cp uniquement:
la source
Similaire à la solution de Paulius, mais les fichiers qui ne vous intéressent pas ne sont pas copiés puis supprimés:
la source
Pour copier tous les fichiers texte dans G: et conserver la structure des répertoires:
la source
Ce ne sont que deux commandes simples, mais je ne le recommanderais pas, à moins que les fichiers que vous n'avez PAS besoin de copier soient petits. C'est parce que cela copiera TOUS les fichiers, puis supprimera les fichiers qui ne sont pas nécessaires dans la copie.
Bien sûr, la deuxième commande est assez longue, mais ça marche!
De plus, cette approche ne vous oblige pas à télécharger et installer des outils tiers (Windows 2000+ BATCH a suffisamment de commandes pour cela).
la source
Sous Linux et d'autres systèmes UNIX, l'utilisation de la
tar
commande le ferait facilement.Ensuite, vous cwd à la cible et:
Bien sûr, vous pouvez diriger la sortie du premier tar vers le second, mais le voir fonctionner par étapes est plus facile à comprendre et à expliquer. Il me manque le cd / to / new / path / nécessaire dans la commande suivante - je ne me souviens simplement pas comment le faire maintenant. Quelqu'un d'autre peut l'ajouter, espérons-le.
Tar (gnutar) est également disponible sur Windows, mais j'utiliserais probablement la
xcopy
méthode moi-même sur cette plate-forme.la source
EDIT: Si vous souhaitez conserver les dossiers vides (qui, en relisant votre message, vous semblez utiliser) / E au lieu de / S.
la source
À l'aide de l'interface de ligne de commande WinRAR, vous pouvez copier les noms de fichiers et / ou les types de fichiers dans une archive. Ensuite, vous pouvez extraire cette archive à l'emplacement de votre choix. Cela préserve la structure de fichier d'origine.
J'avais besoin d'ajouter des fichiers d'image d'album manquants à mon téléphone portable sans avoir à recopier la musique elle-même. Heureusement, la structure des répertoires était la même sur mon ordinateur et mon mobile!
J'ai utilisé:
Cela a créé une archive avec tous les fichiers Folder.jpg dans les sous-répertoires appropriés.
Cette technique peut également être utilisée pour copier des types de fichiers. Si les fichiers avaient tous des noms différents, vous pouvez choisir d'extraire tous les fichiers dans un seul répertoire. Des paramètres de ligne de commande supplémentaires peuvent archiver plusieurs types de fichiers.
Plus d'informations dans ce lien très utile http://cects.com/using-the-winrar-command-line-tools-in-windows/
la source
Pour ceux qui utilisent Altap Salamander (gestionnaire de fichiers 2 panneaux): dans les Options de la popup Copier, il suffit de spécifier les noms de fichiers ou les masques. Facile.
la source
Je suis d'accord avec les expressions régulières, paresseux et opposé aux installations, j'ai donc créé un fichier de commandes qui crée le répertoire et des copies avec des commandes DOS vanille. Cela me semble laborieux mais plus rapide que de travailler sur la robocopie.
(.*)
remplace la chaîne"\1"
et cliquez sur tout remplacer(.*)
remplace la chaînemd qqq\1\nxcopy \1 qqq\1\n
et cliquez sur remplacer tout\\([^\\^"]+)"\n
remplacement de la recherche\\"\n
A:\src
etB:\dest
). Désactivez les expressions régulières, recherchezqqq"A:\src\
remplacerB:\dest\
et cliquez sur tout remplacer.md créera des répertoires imbriqués. copy se comporterait probablement de la même manière que xcopy dans cet exemple. Vous pouvez ajouter / Y à xcopy pour supprimer les confirmations d'écrasement. Vous vous retrouvez avec un fichier batch comme ceci:
répété pour chaque fichier de votre liste d'origine. Testé sur Win7.
la source
Pour ce faire par glisser-déposer, utilisez winzip, il existe une option de préservation de la structure dir. Créez simplement un nouveau .zip au niveau du répertoire qui sera votre racine et faites-y glisser les fichiers.
la source