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

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

Utilisez les XP for commande. Par exemple, à partir de la ligne de commande (dans un fichier batch, utilisez %%x place) pour effectuer un mouvement récursif:

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

Pour faire un renommage récursif, procédez comme suit:

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

Exemple de lot:

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

Je viens d'exécuter un petit exemple dans ma boîte Windows XP SP2 avec la commande de déplacement et cela a fonctionné. Tous les fichiers et répertoires ont été déplacés de source vers destination. Source et dest sont des noms de répertoires.

 Déplacer destination source
 Ver

 Microsoft Windows XP [Version 5.1.2600]
 bouge toi /?

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

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

 Pour renommer un répertoire:
 MOVE [/ Y |  / -Y] [drive:] [chemin] dirname1 dirname2

   [Drive:] [path] filename1 Spécifie l'emplacement et le nom du fichier
                           Ou les fichiers que vous souhaitez déplacer.
   Destination Spécifie le nouvel emplacement du fichier.  Destination
                           Peut consister en une lettre de lecteur et un colon, un
                           Le nom du répertoire ou une combinaison.  Si vous déménagez
                           Un seul fichier, vous pouvez également inclure un nom de fichier si
                           Vous souhaitez renommer le fichier lorsque vous le déplacez.
   [Drive:] [chemin] dirname1 Spécifie le répertoire que vous souhaitez renommer.
   Dirname2 Spécifie le nouveau nom du répertoire.

   / Y Supprime l'invite à confirmer que vous souhaitez
                           Écraser un fichier de destination existant.
   / -Y Causes incitant à confirmer que vous souhaitez écraser
                           Un fichier de destination existant.

 Le commutateur / Y peut être présent dans la variable d'environnement COPYCMD.
 Cela peut être annulé avec / -Y sur la ligne de commande.  La valeur par défaut est
 Pour déclencher des écrasements à moins que la commande MOVE ne soit exécutée à partir de
 Dans un script batch.

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

La commande XCOPY intégrée est proche. Il va faire une copie récursive, mais je ne pense pas qu'il supporte le renommage.

J'ai créé un script VB qui fera une recherche et un remplacement sur les noms de répertoire … J'ai aussi une version de fichier, je pense que cela suffit pour vous aider à démarrer avec votre propre script. La façon dont j'utilise ce script est que j'ai un fichier et que j'ai remplacé.vbs, et le mettre dans le même dossier que les dossiers que je veux renommer. En outre, il ne recueille pas nécessairement dans le dossier, mais pourrait avec une petite modification

 search1 = InputBox("Search for...", "", "") replace1 = InputBox("replace with...", "", "") Dim MyFile MyFiles = GetFileArray(".") For Each MyFile In MyFiles NewFilename = Replace(MyFile.Name, search1, replace1) If InStr( MyFile.Name, search1 ) Then MyFile.Name = NewFilename Next MsgBox "Done..." function GetFileArray(ByVal vPath) 'Get our objects... Set FSO = CreateObject("Scripting.FileSystemObject") Set Folder = FSO.Getfolder(vPath) Set Files = Folder.SubFolders 'Resize the local array 'Arrays are 0 based but Files collection is 1 based. if Files.count = 0 then GetFileArray = array() Exit Function Else Index = 0 Redim FileList(Files.Count-1) For Each File In Files set FileList(Index) = File Index = Index + 1 Next GetFileArray = FileList End If 'Always good practice to explicitly release objects... Set FSO = Nothing Set Folder = Nothing Set Files = Nothing End function 
 for /r %%x in (%1) do ren "%%x" %2 

Cela renverra le fichier de manière récursive 🙂

Enregistrer dans un fichier donner 2 arguments de l'extension et à l'extension.

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

Il renomme tous les fichiers avec extension avi à bmp (dans tous les sous-dossiers :))

Note: Il s'agit de la correction pour la réponse répondue le 26 octobre à 13h20 par Rob Kam. Il a donné pour

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

Où, en cas de shud %% au lieu de %

Cela m'a mieux fonctionné:

 FOR /R "C:\folder1\folder2\" %i in (.,*) DO MOVE /Y "%i" "C:\folder1\" 

Source: http://www.islamadel.com/index.php/notes/6-computer/10-windows-command-line