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!
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 ...
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.
pushd D:\Source
for /r %%a in (*.?*) do (
MOVE "%%a" "D:\Destination folder\%%~nxa"
)
popd
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 .