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?

1voto

Roy Rico Points 5558

J'ai créé un script VB qui fera une recherche et un remplacement sur les noms de répertoires... J'ai aussi une version pour les fichiers, cependant, 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 fileandreplacedirs.vbs, et je le mets dans le même dossier que les dossiers que je veux renommer. De plus, il ne parcourt pas nécessairement le dossier de manière récursive, mais cela pourrait se faire avec une petite modification

search1  = InputBox("Rechercher...", "", "")
replace1 = InputBox("remplacer par...", "", "")

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 "Terminé..."

function GetFileArray(ByVal vPath)
    'Obtenez nos objets...
    Set FSO = CreateObject("Scripting.FileSystemObject")
    Set Folder = FSO.Getfolder(vPath)
    Set Files = Folder.SubFolders

    'Redimensionner le tableau local
    'Les tableaux commencent à 0 mais la collection Files commence à 1.
    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

    'Il est toujours bon de libérer explicitement les objets...
    Set FSO = Nothing
    Set Folder = Nothing
    Set Files = Nothing

End function

1voto

Cela a mieux fonctionné pour moi :

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

1voto

Il existe des ports Windows pour la plupart des commandes UNIX:

0voto

David Points 21

J'ai trouvé ce script python qui fonctionne également :

for root, dirs, files in os.walk(cur_dir):  
    for filename in files:  
        file_ext = os.path.splitext(filename)[1]  
        if old_ext == file_ext:  
            oldname = os.path.join(root, filename)  
            newname = oldname.replace(old_ext, new_ext)  
            os.rename(oldname, newname)

Trouvé sur : http://gomputor.wordpress.com/2008/09/29/change-the-extension-of-multiple-files-in-a-chosen-directory-with-python/

J'ai ajouté Python à mon chemin et mis le script Python ci-dessus dans un dossier 'utils'. J'ai ensuite créé ce simple script batch pour l'exécuter : rn.bat:

python \utils\rn.py %1 %2 %3

J'ai également mis à jour le script python ci-dessus pour qu'il prenne ses arguments à partir de la ligne de commande. rn.py:

import sys
import os

cur_dir = sys.argv[1]
old_ext = sys.argv[2]
new_ext = sys.argv[3]

#print cur_dir, old_ext, new_ext
for root, dirs, files in os.walk(cur_dir):  
    for filename in files:  
        file_ext = os.path.splitext(filename)[1]

        if old_ext == file_ext:  
            oldname = os.path.join(root, filename)  
            newname = oldname.replace(old_ext, new_ext)  
            os.rename(oldname, newname)

Enfin, tout ce qu'il faut faire maintenant est quelque chose comme ceci :

>rn . .foo .bar

ou

>rn \ .exe .txt

Amusez-vous avec le deuxième :)

0voto

Utilisez une commande DOS simple.

  1. Accédez au répertoire source où vous voulez renommer les extensions de fichiers de manière récursive.

  2. Tapez cette commande:

    ren *.[ExtensionDeFichierActuelle] *.[ExtensionDeFichierSouhaitée]

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