Renommer par lot
Résolu/Fermé
barale61
Messages postés
1208
Date d'inscription
jeudi 13 septembre 2012
Statut
Membre
Dernière intervention
4 novembre 2024
-
12 janv. 2023 à 16:17
barale61 Messages postés 1208 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 4 novembre 2024 - 14 janv. 2023 à 11:39
barale61 Messages postés 1208 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 4 novembre 2024 - 14 janv. 2023 à 11:39
1 réponse
brucine
Messages postés
18065
Date d'inscription
lundi 22 février 2021
Statut
Membre
Dernière intervention
3 décembre 2024
2 658
12 janv. 2023 à 18:10
12 janv. 2023 à 18:10
Bonjour,
En supposant que les fichiers d'origine aient un nom aléatoire de type a.png, b.png..., je ne suis pas sûr d'avoir compris, comme ça, mais pas en ligne de commande mais dans un batch (j'ai utilisé pour tester jpg parce que je n'ai pas de png, nom de chemin bien sûr à adapter):
@ECHO OFF
CD /D E:\mondossier
SET COUNT=-1
SET NAME=msgimg
FOR /F "delims=" %%a in ('dir /b E:\mondossier\*.jpg') DO SET FILE=%%~na & CALL :PROCESS
:PROCESS
SET /A "COUNT=COUNT+1"
SET FILE=%FILE:~0,-1%
SET FILE=%FILE%.jpg
REN "%FILE%" "%NAME%_%COUNT%.jpg"
Modifié le 13 janv. 2023 à 17:30
Merci d'avoir pris du temps alors, j'ai essayé, mais cela me renvoie une erreur :
(J'ai juste ajouté "pause" pour avoir le temps de voir l'erreur)
Donc je n'ai toujours que le premier fichier msimg_0.png
Modifié le 13 janv. 2023 à 20:32
J'ai testé avant d'écrire et ça fonctionne très bien chez moi avec des images jpg de noms alphanumériques aléatoires pouvant comporter des tirets, il faut donc chercher l'origine de la misère, qui peut avoir plusieurs causes.
-Il peut arriver que la commande REN n'accepter pas à la fois comme source et destination une variable, auquel cas il faudra tricher en créant les fichiers nouvellement nommés dans un deuxième dossier, puis supprimer le premier et renommer le deuxième, mais on n'en est pas là, ça marche en l'état chez moi.
-La sortie de la commande DIR a un comportement bizarre en tout cas chez moi, elle ajoute un espace après toto.jpg.
On doit s'assurer de la sortie de la variable FILE en mettant ECHO %FILE% suivi de pause à la première ligne de PROCESS (on ne doit retourner que toto), puis après SET FILE=%FILE:~0,-1% qui est destiné à virer cet espace
ECHO %FILE%bidule (on ne doit pas avoir d'espace entre le nom et bidule ni de césure d'un caractère à droite de ce nom) de sorte qu'un troisième ECHO après SETFILE doit nous retourner toto.jpg
-La commande REN sans précision du chemin s'exécute dans le dossier courant (en clair, le batch est dans ce même dossier); si ce n'est pas le cas, il ne faut pas oublier en tête de gondole l'instruction CD /D E:\mondossier qui précise le dossier source; dans le même ordre d'esprit et sur des chemins longs, il peut y avoir des erreurs de lecture, mettre le cas échéant ces chemins entre guillemets tant dans la commande CD que dans la commande DIR, en outre, je ne connais pas le comportement si le dossier n'est pas local mais en réseau (Drive? comporte-t-il les fichiers eux-mêmes ou leur raccourci?).
-Je suis parti du principe que les fichiers s'appelaient tous msgimg quelque chose, mais pas que le premier était déjà correct: l'action doit alors soit comporter une condition de vérification (on ne peut pas renommer un fichier par lui-même), soit rediriger le message d'erreur vers NUL, mais c'est un détail.
-Pour le deuxième fichier, ça ne peut pas marcher puisque le fichier source sélectionné a été nommé msgimg_0.pn ce qui ne peut pas être vrai (il manque le g et on se fait donc forcément planter parce que la source n'existe pas) mais le premier n'est lui pas coupé: cela plaide pour un problème de découpe par SET FILE=%FILE:~0,-1% mais qui n'est pas cohérent: il faudrait que tu fournisses le nom exact de tes 3 ou 4 premiers fichiers pour en trouver la raison.
14 janv. 2023 à 11:39
Ça marche très bien, merci. J'ai juste déplacé le .bat dans le Dossier de travail.