Renommer en masse

Résolu
cs_wbr Messages postés 110 Date d'inscription dimanche 11 août 2002 Statut Membre Dernière intervention 21 juillet 2006 - 2 févr. 2006 à 02:02
cs_wbr Messages postés 110 Date d'inscription dimanche 11 août 2002 Statut Membre Dernière intervention 21 juillet 2006 - 4 févr. 2006 à 19:29
Dans un dossier j'ai plusieurs centaines de fichiers qui commencent avec un chiffre suivit de leurs noms. Ex:

1001 - nom1.ext
1002 - nom2.ext
...

Mais le problème est que je veux classer ces fichiers par ordre alphabétique et que les renommer à la main prendrais bien trop de temps. Comme je n'ai pas touché au vbs depuis environ 5ans je demande l'aide d'un programmeur qui accepterais bien de me faire un petit script pour renommer tous les fichiers d'un même répertoire en effaçant leurs préfixes (soit les 7 premiers caractères). Si quelqun pourrait prendre le temps de m'aider j'apprécirais beaucoup!

9 réponses

cs_wbr Messages postés 110 Date d'inscription dimanche 11 août 2002 Statut Membre Dernière intervention 21 juillet 2006
4 févr. 2006 à 19:29
Je viens de trouver le problème. Certains fichiers était renommer 2fois, alors pour résoudre le problème, sur tous mes fichiers j'ai mit l'attribut +Archive et dans mon script, j'enlève l'attribut une fois le fichier renommer. Cela permet d'empêcher que le même soit renommer 2fois.

Voici mon code:

Dim Fold
Dim Fil
Dim fso
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fold = fso.GetFolder("C:\windows\bureau\testfold")
For Each Fil In Fold.Files
Set Att = fso.GetFile(Fil.Path)
If Not (Att.Attributes) = 0 Then
Fil.Name = Mid(Fil.Name, 8, Len(Fil.Name) - 6)
Att.Attributes = 0
End if
Next
Set Fold = Nothing
Set fso = Nothing
Msgbox "Done"
3
ScSami Messages postés 1488 Date d'inscription mercredi 5 février 2003 Statut Membre Dernière intervention 3 décembre 2007 24
2 févr. 2006 à 02:35
Le mieux serait que tu le fasses toi même tu ne crois pas !!!

A mon avis, évite le VBS... fait plutôt ça en VB ou en VBA (macro) dans Word ou Excel selon ce que tu as sous la main. Ensuite, regarde l'aide sur l'objet FSO (FileSystemObject). Il permet, justement, de manipuler facilement les fichiers pour faire ce genre de trucs. Cet objet va t'amener vers d'autres objets et collections (style Folder, File, ...). Sert toi des exemples dans l'aide : ils sont très bien. C'est très facile à utiliser.
Mais sinon, il y a toujours les fonctions & instructions internes au VB(A).

Le but du jeu, avec ton FSO, est de récupérer un objet collection Folder selon ton Path (chemin d'accès, ton dossier quoi!). Ensuite, il suffit de parcourir la collection via For Each obj In collection.

Pour ce qui concerne l'enlèvement des 7 premiers caractère... si tu es bien sûr de ton coup (que c'est toujours les 7 premiers, qu'il n'y a pas d'exceptions, ...), utilise la fonction MID$(txt, deb, longueur). Style Mid$(varNomDuFichier, 8, Len(varNomDuFichier) - 7).

Voilà, maintenant, à toi de jouer

Enjoy

<hr size="2" width="100%">
( Si une réponse vous convient, cliquez sur le bouton "Réponse acceptée". )
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
2 févr. 2006 à 08:59
Pas mieux, alors je vais faire un petit exemple:

En ajoutant Microsoft Scripting Runtime comme reference a ton projet.

Tu fais un truc de ce genre:

Dim fso As New FileSystemObject
Dim Fold As Folder
Dim Fil As File


Set Fold = fso.GetFolder("C:\tmp\test")
For Each Fil In Fold.Files
Fil.Name = Mid(Fil.Name, InStrRev(Fil.Name, " ") + 1)
Next
Set Fold = Nothing
Set fso = Nothing


ATTENTION il n y a aucun test de fait sur le resultat, si le fichier renommer existe deja, il y aura des erreurs, mais bon c est juste un petit exemple de depart.

@+
Julien
0
cs_wbr Messages postés 110 Date d'inscription dimanche 11 août 2002 Statut Membre Dernière intervention 21 juillet 2006
3 févr. 2006 à 03:22
Tout d'abord merci pour les réponses. Ensuite, pour répondre a ScSami, oui tu as bien raison, le mieux serait de le faire moi-même mais comme je l'ai expliquer, la dernière fois que j'ai touché à la programmation je devais avoir dans les 11-12ans alors ça remonte à un bon bout de temps.

Et jrivet je te remercie beaucoup pour ton aide mais a tu fais ce script pour qu'il fonctionne sous VB ou VBS? J'ai mit ton code dans un fichier .vbs mais il m'affiche une erreur à la 1er ligne, charactère 9, soit le A de Dim As
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
3 févr. 2006 à 08:47
Re,

VBS... j avais oublie,

- Enleve tout les AS ..... laisse juste les DIM NomVariable.
- Remplace cette ligne: Set Fso = New FileSystemObject par
Set Fso = CreateObject("Scripting.FileSystemObject")

Et apres reteste.

@+
Julien
0
cs_wbr Messages postés 110 Date d'inscription dimanche 11 août 2002 Statut Membre Dernière intervention 21 juillet 2006
4 févr. 2006 à 00:03
Bon alors j'ai fait les changements mais le script renommais en gardant seulement la fin du fichier, j'ai donc modifié la ligne avec Mid et voici le nouveau code:

Dim Fold
Dim Fil
Dim Fso
Set Fso = CreateObject("Scripting.FileSystemObject")
Set Fold = fso.GetFolder("C:\windows\bureau\testfold")
For Each Fil In Fold.Files
Fil.Name = Mid(Fil.Name, 8, Len(Fil.Name) - 6)
Next
Set Fold = Nothing
Set fso = Nothing

J'ai fait plusieurs tests en remplaçant Fil.Name = Par Msgbox. Chaque fois le nom était renommer parfaitement, les 7 premiers caractères avaient disparues du nom. Mais lorsque j'ai remit la fonction pour renommer, j'ai eu des résultats imcompréhensibles..

Sur 4 fichiers, seulement 2 ont été renommer correctements j'ai eu ces résultats:

1006 - Matchbox Cross Town Heroes (E).gba
x Cross Town Heroes (E).gba

1007 - Spirit - Der wilde Mustang - Auf der Suche nach Homeland (G).gba
- Der wilde Mustang - Auf der Suche nach Homeland (G).gba

1011 - Buffy - Im Bann der Daemonen - Koenig Darkhuls Zorn (G).gba
Buffy - Im Bann der Daemonen - Koenig Darkhuls Zorn (G).gba

1016 - Weekend Miljonairs (NL).gba
Weekend Miljonairs (NL).gba

Quelqun aurait-il une idée du problème?
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 févr. 2006 à 00:49
Re,

Il faut que toi meme tu sois sur de la nomenclature a suivre pour renommer les fichiers. est de qu ils suivent TOUS le meme modele,...


@+
Julien
0
cs_wbr Messages postés 110 Date d'inscription dimanche 11 août 2002 Statut Membre Dernière intervention 21 juillet 2006
4 févr. 2006 à 01:28
Oui, ils ont tous les 7 premiers caractères en trop. D'ailleurs les noms de fichiers ci-haut donnent un bon apperçu du modèle des noms des fichiers.
0
jrivet Messages postés 7392 Date d'inscription mercredi 23 avril 2003 Statut Membre Dernière intervention 6 avril 2012 60
4 févr. 2006 à 10:32
Lut,

j ai repris ton code, sans le changer ca marche niquel (j ai nomme mes fichier de la meme facon que toi.)

@+
Julien
0
Rejoignez-nous