Renommer par lot

Résolu
barale61 Messages postés 1205 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 10 mars 2023 - 12 janv. 2023 à 16:17
barale61 Messages postés 1205 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 10 mars 2023 - 14 janv. 2023 à 11:39

Bonjour,

J'aimerais, en invite de commande Windows, pouvoir renommer de nombreux fichiers par lot de cette façon, mais je n'y arrive pas :

D:\_1_OneDrive\OneDrive\Bureau\ENUM> for /L %a in (1,1,100) do @copy fichier %msgimg_

Ce que je souhaite, c'est que partant de mon premier fichier msgimg_0.png faire de cette façon :

msgimg_0.png

msgimg_1.png

msgimg_2.png

msgimg_3.png

msgimg_4.png

et ainsi de suite...

Je vous remercie pour votre aide.

1 réponse

brucine Messages postés 8585 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 23 mars 2023 983
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"


 

0
barale61 Messages postés 1205 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 10 mars 2023 109
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

0
brucine Messages postés 8585 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 23 mars 2023 983 > barale61 Messages postés 1205 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 10 mars 2023
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.

1
barale61 Messages postés 1205 Date d'inscription jeudi 13 septembre 2012 Statut Membre Dernière intervention 10 mars 2023 109 > brucine Messages postés 8585 Date d'inscription lundi 22 février 2021 Statut Membre Dernière intervention 23 mars 2023
14 janv. 2023 à 11:39

Ça marche très bien, merci. J'ai juste déplacé le .bat dans le Dossier de travail.

0