Dossier c:\folder1
contient subfolder1
, subfolder2
, etc..
Ces sous-répertoires contiennent .pdf
et .db
des dossiers.
Comment tous les .pdf
les fichiers seront déplacés vers c:\folder1
en utilisant l'interpréteur de commandes Windows?
Cela a fonctionné pour moi:
for /r "c:\source_directory\" %%x in (*.pdf) do move "%%x" "c:\target_directory\"
Cette commande copiera récursivement tous les fichiers pdf du répertoire source vers le répertoire cible en utilisant cmd dans windows 7 - testé et fonctionne.
J'espère que ça aide.
La boucle for externe répertorie les sous-répertoires du répertoire de travail, la boucle for interne répertorie les sous-répertoires à déplacer vers le chemin de destination:
for /d %f in (*.*) do for /d %e in (%f\*.*) do move "%e" DestinationPath
Cela fonctionne mieux si DestinationPath
n'est pas un sous-dossier du répertoire de travail, car il essaiera de déplacer DestinationPath
en lui-même.
Pour confirmer la commande avant de l'exécuter en gros, commencez simplement par faire écho aux commandes de déplacement final comme suit:
for /d %f in (*.*) do for /d %e in (%f\*.*) do echo move "%e" DestinationPath
et copiez/collez l'un des résultats pour l'exécuter et confirmez qu'il a fonctionné comme vous vous y attendiez. Retirez ensuite l'écho et bougez.
Je ne pense pas qu'il existe un caractère générique qui fonctionnera sur les sous-dossiers, vous devez donc utiliser une boucle pour parcourir chaque sous-dossier et déplacer * .pdf;
FOR /R [your root folder path] %%G IN (*.pdf) DO move %%G [new path]
La commande après DO est intrinsèquement dans ses propres guillemets. Si vous prévoyez des espaces dans votre source ou destination, utilisez des guillemets doubles pour les encapsuler, par exemple:
FOR /R "source folder with spaces" %%G IN (*.pdf) DO move "%%G" "dest path with spaces"
REMARQUE les guillemets autour de %% G, ceux-ci sont requis pour que la commande de déplacement résolve le chemin.
** MODIFIER: En réponse à la réponse acceptée, la commande From vous invite sous Windows XP et Windows 7, respectivement:
Cela montre qu'un caractère générique ne fonctionne pas dans les chemins, uniquement pour les fichiers dans un seul répertoire (par exemple C:\dossier * .files). L'invite de commandes ne fonctionne pas de manière récursive lorsqu'elle rencontre un caractère générique.
Il existe une autre façon de procéder dans l'Explorateur Windows (interface graphique, pas d'invite de commandes):
Je sais que c'est superlate, mais juste au cas où cela aiderait quelqu'un.
Utilisé pour rechercher dans tous les sous-dossiers un fichier .MKV et les déplacer vers le répertoire actuel dans lequel se trouve le fichier de commandes.
FOR /D /r %%F in ("*") DO (
pushd %CD%
cd %%F
FOR %%X in (*.mkv) DO (
move "%%X" "%CD%"
)
popd
)
@echo on
for /r "F:\All_drawings\newdrg\" %%x in (*.tiff) do move "%%x" "F:\Alldrawings"
pause
{déplace tous les fichiers du dossier newdrg
et de ses "sous-dossiers" vers le dossier cible Alldrawings
, cette commande est destinée à une opération par fichier batch pour la ligne de commande, utilisez un seul "%" aux deux endroits }.
Robocopy a fait des merveilles pour moi:
robocopy c:\cache c:\cache-2012 ?????-2012*.hash /S /MOV
Je l'ai utilisé pour déplacer tous les fichiers avec un certain masque hors de c:\cache
et ses nombreux sous-répertoires.
Je prends juste un coup de fou dans le noir ici, mais si je me souviens bien, DOS peut gérer les globes et l'équivalent de mv
est MOVE
, donc:
MOVE C:\FOLDER1\*\*.PDF C:\FOLDER1\
MOVE "C:\FOLDER 1\PDF FILES\*.pdf" "C:\FOLDER 1"
MOVE "C:\FOLDER 1\DB FILES\*.db" "C:\FOLDER 1"
Après la commande de déplacement, vous avez le dossier source suivi de la destination vers laquelle les fichiers seront déplacés. Le * devant chaque extension de fichier est une fonction générique qui sélectionnera tous les types de fichiers spécifiés existant dans ce répertoire.
De plus, si vous pouvez créer un fichier .bat avec ces commandes si vous le souhaitez. Pour ce faire, collez vos commandes dans le bloc-notes et enregistrez-les sous . Bat au lieu de . Txt
Ensuite, vous pouvez double-cliquer sur le fichier et il exécutera les commandes dans le fichier à chaque fois. Ceci est utile si vous avez des tâches répétitives qui le nécessitent.