Bonjour,
D'accord, le titre n'est pas accrocheur Je le sais pour avoir lu de très nombreuses discussions/demandes/tutos/... sur le même sujet.
Chacun répondait à une petite partie de mon problème, mais... je n'ai toujours pas la solution.
Alors me voici.
Le problème:
dans un répertoire, se trouve une collections de photos et images (jpg, png, ...).
Leurs noms sont tous sous la forme: "0005_maphoto.jpg", "0006_mondessin.gif" ou "0010_ma_carte.bmp".
Mon objectif:
je cherche à écrire un batch qui supprimerait les 5 premiers caractères de chaque nom, pour obtenir: "maphoto.jpg", "mondessin.gif" ou "ma_carte.bmp"
Le meilleur résultat que j'ai obtenu est avec cet essai. Il marche.... trop bien !
NB. Tous les "echo..." ne sont là que pour visualiser les étapes
Code bat : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 @echo off setlocal enabledelayedexpansion for /R %%X in (*.jpg ) do call :FAIRE %%X goto :eof :FAIRE echo %1 rem nom du fichier long set A=%1 echo FICHIER_LONG === !A! set B=%~x1 echo EXTENSION === !B! set C=%~nx1 echo FICHIER_COURT === %C% set D=%C:~5% echo D === %D% ren !A! %D% pause goto :eof endlocal
Il marche trop bien, disais-je... voici pourquoi.
Afin de simplifier les choses au maximum, j'ai placé ce batch dans un dossier ne contenant que lui et une seule photo : "0004_claude_R.jpg"
Lancement du batch, arrêt au niveau de la "pause", vérification: magnifique , la photo est renommée "claude_R.jpg", ce que je voulais !
Appui sur une touche, et... surprise et désillusion: le même (et unique) fichier est traité à nouveau et devient "e_R.jpg".
La boucle s'arrête ensuite, mais... trop tard
J'ai bien sûr essayé quelques variantes en espérant...
- une boucle "for" avec ou sans le paramètre "/R" : pas de changement
- remplacer l'instruction de renommage "ren !A! %D%" par "ren !A! %D%x", de façon que le renommage transforme l'extension en autre chose que .jpg (quitte à virer le "x" par la suite), et là, résultat encore plus surprenant:
au premier tour de boucle, j'obtiens, comme attendu : "claude_R.jpgx", mais il y a un 2ème tour de boucle qui donne: "e_R.jpgxx" (Cette fois ce n'est même plus un fichier .jpg qui est renommé !)
J'avoue que je ne sais plus quoi inventer et je me tourne vers les spécialistes .. avec beaucoup d'espoir.
Merci d'avance de l'aide qu'on pourra m'apporter
Mike
Partager