41 votes

Quelle commande puis-je utiliser pour renommer ou déplacer de manière récursive un fichier sous Windows ?

Quelle commande dans Windows émule la commande de déplacement / renommage récursif de Unix?

59voto

Rob Kam Points 1788

Utilisez la commande for de XP. Par exemple, à partir de l'invite de commandes (dans un fichier batch, utilisez %%x à la place) pour effectuer un déplacement récursif, faites :

for /r %x in (foo) do move "%x" "drive:\chemin\bar"

Pour effectuer un renommage récursif, faites :

for /r %x in (*.c) do ren "%x" *.cpp

Exemple de fichier batch :

for /r "< DIR >" %%x in (*.c) do ren "%%x" *.cpp

3voto

Lance Miller Points 39

robocopy "C:\Dossier Source" "C:\Dossier Destination" /E /COPYALL /XJ


Description des paramètres :
/E - copie les sous-répertoires, y compris ceux vides (/S pour exclure les vides)
/COPYALL - COPIER TOUTES les informations de fichier (équivalent à /COPY:DATSOU)
/XJ - eXclure les points de jonction et les liens symboliques (normalement inclus par défaut).

2voto

Flerby_of_blows Points 275

Je viens de faire un petit exemple dans ma boîte Windows XP SP2 avec la commande move et ça a fonctionné. Tous les fichiers et répertoires ont été déplacés de la source vers la destination. La source et la destination sont des noms de répertoire.

move source dest
    ver

Microsoft Windows XP \[Version 5.1.2600\]
    move /?

Déplace des fichiers et renomme des fichiers et des répertoires.

Pour déplacer un ou plusieurs fichiers:
MOVE \[/Y | /-Y\] \[drive:\]\[path\]nomdufichier1\[,...\] destination

Pour renommer un répertoire:
MOVE \[/Y | /-Y\] \[drive:\]\[path\]nomdurepertoire1 nomdurepertoire2

  \[drive:\]\[path\]nomdufichier1 Spécifie l'emplacement et le nom du fichier
                          ou des fichiers que vous souhaitez déplacer.
  destination             Spécifie le nouvel emplacement du fichier. La destination
                          peut être constituée d'une lettre de lecteur et deux-points, d'un
                          nom de répertoire, ou une combinaison des deux. Si vous déplacez
                          un seul fichier, vous pouvez également inclure un nom de fichier si
                          vous souhaitez renommer le fichier lors du déplacement.
  \[drive:\]\[path\]nomdurepertoire1  Spécifie le répertoire que vous souhaitez renommer.
  nomdurepertoire2                Spécifie le nouveau nom du répertoire.

  /Y                      Supprime la demande de confirmation si vous voulez
                          remplacer un fichier de destination existant.
  /-Y                     Provoque une demande pour confirmer si vous souhaitez remplacer
                          un fichier de destination existant.

L'interrupteur /Y peut être présent dans la variable d'environnement COPYCMD.
Cela peut être remplacé par /-Y sur la ligne de commande. La valeur par défaut est
de demander une confirmation en cas de remplacement, sauf si la commande MOVE est exécutée à partir
d'un script batch.

2voto

for /r %%x in (%1) do ren "%%x" %2

cela renommera le fichier de manière récursive :-)

enregistrez dans un fichier en donnant 2 arguments de l'extension et à l'extension.

ex : le nom du fichier est test.bat commande : test *.avi *.bmp

il renomme tous les fichiers avec l'extension avi en bmp (dans tous les sous-dossiers :))

Note: Il s'agit d'une correction du message répondu le 26 octobre à 13h20 par Rob Kam. Il a donné

/r %x in (*.c) do ren "%x" *.cpp

alors qu'il aurait dû avoir %% au lieu de %

1voto

La commande XCOPY intégrée est proche. Elle fera une copie récursive, mais je ne pense pas qu'elle supporte le renommage.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X