Renommer des fichiers en lot

Résolu/Fermé
krystof - 17 janv. 2013 à 22:36
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 - 14 févr. 2013 à 11:37
Bonjour,

Je possède une photothèque qui contient environ 11000 produits. Chaque fichier est bien entendu nommé par un code produit du type 3524.jpg. Il faudrait que je renomme tous ces fichiers en lot. Pour cela je possède un fichier excel contenant l'ancien code sur une colonne et le nouveau code dans l'autre. A noter que certains produits ont plusieurs images (ex. 1223-1.jpg, 1223-2.jpg, ...) et que certaines images servent à plusieurs produits (ex. 1425_1448.jpg). Je recherche donc un script qui pourrais scruter mon dossier image pour remplacer les codes correspondants à mon excel.
Vous remerciant par avance.

15 réponses

eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 17/01/2013 à 22:52
Bonsoir,

il faudrait un extrait de ton fichier avec les anciens et nouveaux noms, et tous les cas particuliers s'il y en a, avec les explications.
A noter que certains produits ont plusieurs images (ex. 1223-1.jpg, 1223-2.jpg, ...) et que certaines images servent à plusieurs produits (ex. 1425_1448.jpg).
??? si c'est juste renommer, une image a ancien et nouveau nom.

Déposer le fichier xls (réduit au nécessaire et anonymisé) sur cjoint.com et coller ici le lien fourni.

eric
Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
18 janv. 2013 à 11:20
Bonjour,

Ci joint le lien contenant les fichiers :
https://www.cjoint.com/?0AslgNazQNS

Les cas particuliers sont sur les noms des images.
Les produits qui ont plusieurs images sont codifiés comme ceci 1223-1.jpg, 1223-2.jpg,... soit un tiret et un chiffre -1, -2, -3, etc...
Les produits qui ont deux codes (plusieurs produits peuvent avoir la même image) 1425_1448.jpg sont séparés par un underscore.
Il peut arriver qu'un code n'est pas d'image (si un fichier log pouvait être généré pour ce cas là, se serait au top).
Merci beaucoup de t'intéresser à mon cas.

Bonne journée
Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 18/01/2013 à 12:02
Là je dois m'absenter un moment mais si tu pouvais expliquer le principe pour 1425_1448.jpg
Qu'est-ce qu'on trouve comme ancien code et nouveau code ?
1425_1448 et 123425_123448 ?

On est d'accord : 1 ligne égale toujours 1 image (hormis le cas du aaa-x.jpg)
1425_1448 ne veut pas dire de 1425.jpg à 1448.jpg

Autre question sur aaa-x.jpg :
Peut-on considérer à coup sûr qu'il n'y a pas de trous dans les x ?
Si, pour simplifier le programme, je mémorise qu'il y en a 5 (de -1 à -5) plutôt que tous leurs noms c'est bon ?


eric
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
18 janv. 2013 à 12:42
Si tu te réfères à mon exemple de tableau, l'image qui s'appelle 1425_1448 devra s'appeler 352658_365125. Et il s'agit bien de deux codes indépendants et non d'une suite comme tu me le demandais.
Pour les produits qui ont plusieurs images (ex 1223-1, 1223-2) prévoir de -1 à -9 : ce chiffre se trouve toujours en dernière position toutefois il existe déjà sur mes ancien codes, il ne faudra donc pas y toucher. De plus lorsqu'il n'y a qu'une seule image elle ne s'appelle pas 1223-1.jpg mais 1223.jpg tout simplement.

Merci encore.
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 18/01/2013 à 12:54
l'image qui s'appelle 1425_1448 devra s'appeler 352658_365125.
Là ça colle pas...
Ou alors on considère que si je trouve cette image je ne dois traiter aucun code de la liste se trouvant entre les 2 bornes.
Et que 1426 (951357) et 1428 (125985) ne servent à rien et ne doivent même pas être comptées en images absentes.
Tu confirmes ?

Pour les produits qui ont plusieurs images (ex 1223-1, 1223-2) prévoir de -1 à -9
ok, mais tu ne réponds pas à ma question : est-on sûr à 100% qu'il n'y a pas de trous ?

Si la liste n'est pas triée je suppose que je peux le faire...
Ca ne sera sans doute que ce soir...

eric
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
18 janv. 2013 à 14:38
Bon ok, a priori pour les images qui ont deux codes 1425_1448 le script ne peux pas fonctionner. Donc, avant de lancer le script, je vais dupliquer mon image 1425_1448 pour en faire deux (1425.jpg et 1448.jpg). Un travail titanesque, mais bon...

Pour les produits qui ont plusieurs images (-1 à -9), logiquement il ne devrait pas y avoir de trou. Je n'avais pas répondu à ta question car j'avais dit "il ne faut pas y toucher". Ne peux tu pas indiquer au script : dès que je vois un - (tiret) je ne touche pas aux chiffres qui suivent.

Que veux tu dire pas : si la liste n'est pas triée ? Je ne peux en aucun cas t'envoyer les images, car d'une part il y a au total près de 60 Go et de plus il s'agit de produits d'un client qui ne doivent pas sortir de mon taf.

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 18/01/2013 à 17:12
Bon ok, a priori pour les images qui ont deux codes 1425_1448 le script ne peux pas fonctionner. Donc, avant de lancer le script, je vais dupliquer mon image 1425_1448 pour en faire deux (1425.jpg et 1448.jpg). Un travail titanesque, mais bon...
Pas forcément, je n'ai pas dit ça.
Explique complètement le fonctionnement attendu. Il faut qu'il soit logique et sans ambiguïté.
Je reformule ma question.
J'ai comme sur ton exemple :
1425 352658
1426 951357
1428 125985
et un fichier 1425_1428.jpg
Est-ce que je vais trouver un fichier 1426.jpg ? Et si je ne le trouve pas est-ce une anomalie à te lister ? (questions 1 et 2)
Et si tu veux en faire 2 images la macro peut très bien le faire...

Au passage peut-il y avoir des images 1425_1428-1.jpg, 1425_1428-2.jpg, ... ? (question 3)

Pour les produits qui ont plusieurs images (-1 à -9), logiquement il ne devrait pas y avoir de trou.
Répond précisément aux questions sinon on n'est pas prêt d'avancer...
C'était :
ok, mais tu ne réponds pas à ma question : est-on sûr à 100% qu'il n'y a pas de trous ?
réponse : OUI ou NON (question 4)

La programmation ne se contente pas d'à-peu-près. Si tous les cas ne sont pas prévus ou mal fait car tu réponds à coté tu auras qcq chose qui plante ou qui fourni des réponses erronées.

Il y aura peut-être d'autres questions quand j'aurais commencé, pour l'instant j'essaie juste d'imaginer le traitement.
Rassure-toi, je n'ai pas besoin des photos, un fichier test qui regroupe tous les cas de figure est suffisant.


eric
0

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

Posez votre question
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
18 janv. 2013 à 17:49
Réponse 1 : Oui. Tu vas trouver un fichier 1426
Réponse 2 : Si on ne le trouve pas, il faudrait le lister (je croyais avoir répondu ce matin (fichier log).
Réponse 3 : Oui, il peut y avoir les deux particularités combinées.
Réponse 4 : Non, je ne suis pas sûr à 100%, car c'est moi qui ai codifié et sur une telle quantité, il est possible qu'il y ait une erreur.

Je n'avais pas précisé, les anciens codes ne se suivent pas forcément, il peut y avoir des trous (1426 1427 1429...). Aussi, l'extension du fichier est dans la plupart des cas du jpg, mais il peut y avoir du tiff, psd, eps ou pdf.

En fait ma codification est comme ceci :
Réf 3620 = radiateur 1400 watts = image 3620_3645.jpg
Réf 3645 = radiateur 1600 watts = image 3620_3645.jpg
C'est donc la même image pour les deux produits.

Réf 6521 = micro-ondes (rouge ou blanc) = image 6521-1.jpg (rouge) et 6521-2.jpg (blanc)
Deux images pour le même produit

Et comme vu précédemment on peux combiner les deux :
Réf 8456 = Lave linge (noir ou blanc) 2500 t/min = img 8456_8481-1.jpg (noir) et 8456_8481-2.jpg (blanc)
Réf 8481 = Lave linge (noir ou blanc) 2800 t/min = img 8456_8481-1.jpg (noir) et 8456_8481-2.jpg (blanc)
Les deux images (blanc ou noir) servent aux 2 produits

Désolé, si je ne suis pas clair. Tu es patient.

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 19/01/2013 à 12:08
Bonjour,

hé bé, il était temps de dire que les noms de fichier commençaient par image ou img ou xxx et qu'il y avait d'autres extensions que jpg. Ca n'a plus rien à voir avec la demande initiale...
J'avais commencé, je stoppe...

Il y a toujours une chaine devant le n° d'image et toujours un espace en séparateur ou on peut avoir un autre caractère comme "_" ? (3 questions)
Ta liste ancien et nouveau code intègre cette chaine ?

D'autres surprises non dites ?
Si tu pouvais envoyer un extrait réel de qcq dizaines de lignes et noms de fichiers concernés (liste les noms réels des fichiers dans une colonne séparée) regroupant les différents cas ça serait plus prudent. Je suis plutôt du style à dire 'fallait le dire avant, corrige le code toi même'.

eric


Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
19 janv. 2013 à 15:23
Salut Eric,

Oula, non pas du tout. J'ai noté img pour t'expliquer le principe, tel que Réf qui n'existe pas sur mon tableau, d'ailleurs sur mon lien tu as pu voir qu'il n'y avait que des chiffres. Je suis fort désolé pour tous ces quiproquos, je ne connais pas du tout la programmation, je suis graphiste. Et pour moi, je voyais le script rechercher un chiffre et le remplacer, tout simplement, alors que je viens de comprendre qu'il allait réécrire tout le nom du fichier. Ne serait-il pas plus simple de ce contacter autrement afin d'en discuter !
Pour les 3 premières question, je ne sais pas ce qu'est une chaîne en programmation, mais vu ton explication je pense que c'est le mot "img" qui se répète sur tous les noms de fichier. Donc là, non, il n'y a pas de chaîne, ni d'espace. Il y a seulement des chiffres (les anciens codes de 3 à 5 chiffres et les nouveaux en ont 6, comme sur mon exemple en lien) et aussi les 3 caractères spéciaux "- _ ." et les extensions que je t'ai citées (encore désolé, mais je viens de percuter sur ce cas qui est assez peu fréquent dans ma base).
Donc dans le tableau seulement des chiffres et sur mes fichiers (0123456789-_.) et les extensions
Je n'ai pas accès aux fichiers depuis chez moi, dès lundi matin, je reprends tout ceci à tête reposée, et regarde si il y a d'autre cas particuliers, je te ferais un nouveau lien avec tout ceci. Si ce lien ne pouvait être partagé que par toi, cela m'arrangerait.

Bon week-end à toi.

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
19 janv. 2013 à 15:53
Puisque tu me confirmes que j'ai mal compris ton post précédent c'est bon, pas besoin de complément.
En cas de besoin (si données confidentielles) cliquer sur mon pseudo pour m'écrire en privé.
Tu devrais l'avoir pour tester lundi.

Pour les anomalies, tu préfères vraiment une liste à part ou une simple colonne avec "ok" si la ref a bien été utilisée pour un fichier c'est suffisant ? Un simple filtre te fait apparaitre les ref inutilisées.
Faire l'un ou l'autre est pareil pour moi, de toute façon une autre liste séparée est prévue pour lister les fichiers non renommés.
D'ailleurs pour ceux-là on pourrait envisager de n'annoncer que le nombre et les déplacer dans un sous-répertoire 'Orphelins'. A toi de les réintégrer ou pas ensuite.

eric
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
19 janv. 2013 à 16:14
Ok, lundi je t'envoie un message privé avec les fichiers.
Dis donc, pas mal du tout ce que tu me proposes, mettre les fichiers orphelins dans un répertoire. Pour la colonne ok si la réf à été utilisé cela suffira. Le ok s'écrira sur mon excel dans la colonne C par exemple en face de la référence, c'est bien cela ?

Je reviens sur les images utilisées sur plusieurs produits (1425_1896), a mon avis il serait plus simple de dupliquer les images comme tu me l'avais proposé, car je vais me retrouver avec des fichiers avec des noms à rallonge 123579_569456) et puis ce sera plus simple lorsque je rechercherai une réf avec les noms de fichiers.

Y'a pas le feu, prend ton temps, je ne voudrais pas non plus que tu ais d'autres surprises, donc attends lundi de voir les fichiers.

Encore merci

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 20/01/2013 à 13:30
Bonjour,

Une proposition à tester très sérieusement avant de traiter tes 11000 fichiers, sur la masse il te sera impossible de détecter les éventuelles erreurs.
Je te conseille de te faire un répertoire de test avec TOUS les cas de figure.
Fichiers avec 1 ou 2 ref, avec ou sans post-index -x, existants ou non dans la liste (le 1er, le 2ème, les deux) etc
Et de travailler sur une copie en conservant les originaux qcq semaines.

J'ai ressorti la duplication des fichiers avec 2 ref dans une procédure à part que tu pourras lancer ou pas (ce qui double les tests à faire si tu penses l'utiliser), ce qui est plus prudent.

Chaque procédure démarre par le choix du répertoire à traiter dans une boite de dialogue.
DupliquerFichiers : si le fichier à créer est existant il ne sera pas écrasé.
RenommerFichiers : si le fichier est existant il sera remplacé.
Les fichiers orphelins sont déplacés dans un sous-répertoire. Attention si tu lances 2 fois la procédure, les fichiers déjà renommés seront vus comme orphelins.

https://www.cjoint.com/c/CAumTxvTEbC
Alt+F11 pour voir le code dans le Module1

eric

PS: vu le temps de traitement qui sera très long (commence par des petits paquets) tu peux suivre l'évolution dans la barre d'état en bas.

Jamais tu ne répondras à un mp non sollicité...
Bon, ça c'est fait.
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
20 janv. 2013 à 14:29
Salut Eric,

Là, je suis sur le cul... C'est exactement ce qu'il me fallait. Top du top, un vrai travail de pro.
J'avais prévu évidement de faire une copie de sauvegarde, ce n'est pas la place qu'il manque sur nos serveurs. J'ai également classé mes fichiers dans des sous-répertoires par catégorie, comme cela le traitement ce fera par petits paquets. Je viens de tester sur des fichiers fictifs et ça me parait très très bien.

Reste donc lundi à tester sur la vraie base en prenant les précautions que tu m'a cité.

Milles mercis, je te tiens au courant dès que les tests sont effectués.

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
20 janv. 2013 à 16:57
J'ai oublié de te préciser : toutes les extensions sont prises en compte sauf les *.xl*
Donc n'avoir que des images ou des fichiers excel dans ceux-ci.
eric
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
20 janv. 2013 à 18:45
Ok, parfait.
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
21 janv. 2013 à 12:23
Bonjour,

Mon ordi pro est un Macintosh et la version de Excel est 2004. Je ferais donc le test sur mon PC perso et aussi les conversions définitives, car la macro ne fonctionne pas sur mon Mac.

Eric, je te tiens au courant, les tests ne sont donc pas encore effectués.

Christophe
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
22 janv. 2013 à 15:52
Bonjour Eric,

Je viens de tester ton script sur une catégorie complète. Je dois dire que le travail titanesque n'est plus qu'un jeu d'enfant. Cela me permet également d'avoir une base plus propre car j'ai remarqué, et ceci me parait logique, que si j'ai un tiret à la place d'un underscore cela génère une erreur. Donc je vérifie brièvement mon répertoire au préalable et tout se passe à merveille. J'attend donc maintenant le feu vert du client pour lancer la procédure.

Encore un grand merci pour ce travail.

Je te recontacterais dès que la base sera opérationnelle, d'ici quelques semaines.

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 22/01/2013 à 17:12
Bonjour,

Si ça t'intéresse j'ai fait évoluer dans ce sens.
Si un nom de fichier a plus de 2 caractères (tu peux passer à 1 dans le code) derrière le - (hors extension) ou bien s'il a plus d'1 tiret dans son nom il n'est pas ajouté à la liste des fichiers à traiter.
Ces fichiers sont listés en feuil2.
Bien sûr si tu poursuis le traitement derrière il seront vus orphelins, mais ça peut te permettre de contrôler les répertoires avant et d'éviter les plantages au milieu.
A tester (et conserver l'ancienne version au cas ou)

https://www.cjoint.com/c/CAwreI5CHEt

eric
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
22 janv. 2013 à 21:20
Encore une fois : chapeau bas... Je m'incline...
Je viens de tester, c'est vraiment plus pratique comme ceci. Bravo.

Merci et bonne soirée.

Christophe
0
krystof31 Messages postés 17 Date d'inscription vendredi 10 juin 2011 Statut Membre Dernière intervention 20 septembre 2016
14 févr. 2013 à 09:38
Bonjour Eric,

Voilà ma conversion est maintenant terminée. Tout c'est très bien déroulé. Je te remercie encore une fois pour tout ce travail. Si toutefois, tu avais besoin des services d'un graphiste, n'hésites pas.

Je ne sais pas comment mettre "sujet résolu" sur ce forum, y'a t'il une manip que je n'aurais pas vue ?

Christophe
0
eriiic Messages postés 24570 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 23 avril 2024 7 213
Modifié par eriiic le 14/02/2013 à 11:38
Bonjour,

Merci pour le retour.
Je vois que tu as vu pour le résolu...
eric
0