67 votes

Comment copier récursivement les fichiers d'un motif spécifique dans un seul dossier à plat sous Windows?

Je dois copier un ensemble de fichiers DLL et PDB à partir d'un ensemble de dossiers de manière récursive dans un autre dossier. Je ne veux pas recréer la hiérarchie des dossiers dans le dossier cible. Je souhaite utiliser les outils Windows intégrés, par exemple les commandes DOS.

118voto

Alexander Prokofyev Points 14183
 mkdir targetDir
for /r %x in (*.dll, *pdb) do copy "%x" targetDir\
 

Utilisez / Y à la fin de la commande ci-dessus si vous copiez plusieurs fichiers et que vous ne voulez pas continuer à répondre "Oui".

37voto

Bronek Points 1476

commande XCOPY

exemple de copie de dossier récursive:

 mkdir DestFolder
xcopy SrcFolder DestFolder /E
 

(comme indiqué ci-dessous dans le commentaire suivant WIKI, cette commande est disponible depuis DOS 3.2)

0voto

SteckDEV Points 49

BTW assurez-vous que vous avez les guillemets exacts si vous avez des espaces dans votre chemin.

C'est mon événement postbuild pour mon serveur de build TFS (c'est pourquoi il y a "%%"). J'avais besoin de copier tous les fichiers de test.

s'il n'existe pas "$ (TargetDir) .. \ SingleFolderOutput" mkdir -p "$ (TargetDir) .. \ SingleFolderOutput"

pour / r %% x in (* .dll, * .pdb, * .xml, * .xaml, * .exe, * .exe.config) ne xcopy "%% x" "$ (TargetDir) .. \ SingleFolderOutput "/ Y

-1voto

Henrik Thomsen Points 9
@echo off
if %1'==' goto usage
if %2'==' goto usage
if %3'==' goto usage
for /D %%F in (%1\*) do xcopy %%F\%2 %3 /D /Y
for /D %%F in (%1\*.) do call TreeCopy %%F %2 %3
goto end
:usage
@echo Usage: TreeCopy [Source folder] [Search pattern] [Destination folder]
@echo Example: TreeCopy C:\Project\UDI *.xsd C:\Project\UDI\SOA\Deploy\Metadata
:end

-3voto

Ady Points 4132

Je ne suis au courant d'aucun outil de ligne de commande qui effectue cela directement, mais vous pouvez créer un script de traitement par lots pour parcourir les sous-dossiers et copier les fichiers dont vous avez besoin.

Cependant, vous pouvez vous retrouver avec des fichiers avec des noms de fichiers en double si vous les placez tous dans le même dossier.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X