web-dev-qa-db-fra.com

Windows copie par lots des fichiers de sous-dossiers dans un dossier

J'avais essayé de créer un script de traitement par lots qui copie tous les fichiers * .tif situés dans D:\images (sous-dossiers nommés ici au hasard) dans d:\all.

xcopy D:\Downloads\*.TIF D:\temp\ /s

fonctionne, mais il copie avec toutes les arborescences de dossiers. J'ai essayé d'utiliser d'autres clés, mais ça ne marche pas .. .. Merci pour votre aide!

13
Sergii Rechmp

FOR est votre ami. Lisez HELP FOR sur l'option /R et la substitution de variable %~nx; et ensuite essayez ce code très simple.

   pushd d:\downloads
   for /r %%a in (*.tif) do (
     echo COPY "%%a" "d:\temp\%%~nxa"
   )
   popd

observez attentivement les résultats puis supprimez la commande ECHO.

Vous devrez affiner le code pour faire face aux erreurs, noms dupliqués, cas Edge, noms avec des caractères réservés, conditions de course, événements cosmiques ...

36
PA.

Fichiers recherchés à l'aide de l'explorateur de fichiers Windows, par exemple. * .gif, j'ai des fichiers dans la fenêtre de recherche, utilisé Edit => Select All, copié puis collé dans le dossier souhaité. Cela copiait tous les fichiers gif de tous les sous-répertoires dans un seul dossier . Pour un grand nombre de fichiers, il se bloque parfois/ne répond pas, mais fonctionne normalement.

4
Sham Yemul
pushd D:\Source
   for /r %%a in (*.?*) do (
       MOVE "%%a" "D:\Destination folder\%%~nxa"
   )
popd
2
Stur

Vous pouvez également utiliser le logiciel gratuit XXCOPY. Fonctionne comme XCOPY, mais lorsque vous utilisez un paramètre/SG, cela aplatit les sous-répertoires. Voir comment l'utiliser ici .

1
Ev0oD