Renommer des fichiers 4 par 4

French support forum

Moderators: Stefan2, white, nsp

Post Reply
Montlebert
Junior Member
Junior Member
Posts: 15
Joined: 2008-01-01, 13:50 UTC

Renommer des fichiers 4 par 4

Post by *Montlebert »

Bonjour,

Je souhaiterais, avec Tcmd, renommer des fichiers image 4 par 4 pour l'ensemble d'un répertoire en une seule fois afin d'obtenir par exemple :

img01_[N]
img02_[N]
img03_[N]
img04_[N]
img01_[N]
img02_[N]
img03_[N]
img04_[N]
img01_[N]
img02_[N]
img03_[N]
img04_[N]
etc.

Est-ce que c'est possible ?

Par avance merci de votre aide.

PS : Je crains que non à la lecture de ce fil : http://www.ghisler.ch/board/viewtopic.php?t=27184&highlight=rename mais il y a un espoir d'après la réponse de monsieur Ghisler que je remercie. :)
Cordialement.
Montlebert
User avatar
TieFighter
Member
Member
Posts: 189
Joined: 2007-12-03, 12:58 UTC
Location: France

Post by *TieFighter »

Je n'ai pas de solution en TC mais en DOS si a peut aider
A mettre dans un fichier .cmd

Code: Select all

@ECHO OFF

SET /A CPT1=1
SET /A CPT2=1

FOR /R %%A IN (*.BMP;*.jpg) DO CALL :TRAITE "%%~nxA" %%~xA
GOTO :EOF

:TRAITE
IF %CPT1% LSS 10 (SET FIC=img0%CPT1%_0%CPT2%%2) ELSE (SET FIC=img%CPT1%_0%CPT2%%2)
ECHO renommage de %1 en %FIC%
move %1 %FIC%
IF %CPT2% EQU 4 SET /A CPT1=%CPT1%+1
IF %CPT2% EQU 4 (SET /A CPT2=1) ELSE ( SET /A CPT2=%CPT2%+1)
Cela donne :
renommage de "TEST1.bmp" en img01_01.bmp
renommage de "TEST10.bmp" en img01_02.bmp
renommage de "TEST11.jpg" en img01_03.jpg
renommage de "TEST12.bmp" en img01_04.bmp
renommage de "TEST13.bmp" en img02_01.bmp
renommage de "TEST14.jpg" en img02_02.jpg
renommage de "TEST15.bmp" en img02_03.bmp
renommage de "TEST16.bmp" en img02_04.bmp
renommage de "TEST17.bmp" en img03_01.bmp
renommage de "TEST18.bmp" en img03_02.bmp
[...]
renommage de "TEST18.jpg" en img09_03.jpg
renommage de "TEST19.jpg" en img09_04.jpg
renommage de "TEST21.jpg" en img10_01.jpg
renommage de "TEST24.jpg" en img10_02.jpg
[...]
A adapter selon tes besions

Cordialement,
TieFighter
Montlebert
Junior Member
Junior Member
Posts: 15
Joined: 2008-01-01, 13:50 UTC

Post by *Montlebert »

Bonjour TieFighter,

je vous remercie infiniment pour votre réponse et vous prie de m'excuser pour ma réponse tardive.

Je vais regarder cela de plus près car je ne connais pas très bien le DOS mais je vais m'efforcer de comprendre.

Je me rends compte que les images ne sont pas classées comme je le souhaite, c'est à dire :

image01_[N1]
image02_[N1]
image03_[N1]
image04_[N1]
image01_[N2]
image02_[N2]
image03_[N2]
image04_[N2]
[...]

Peut-être faut-il inverser ?

[N1]_image01
[N1]_image02
[N1]_image03
[N1]_image04

Encore merci de votre aide.
Cordialement.
Montlebert
User avatar
TieFighter
Member
Member
Posts: 189
Joined: 2007-12-03, 12:58 UTC
Location: France

Post by *TieFighter »

Oui c'est ça le Dos ou Windows classe par ordre alphabétique
image01_[N1]
image02_[N1]
image03_[N1]
image04_[N1]
image01_[N2]
image02_[N2]
image03_[N2]
image04_[N2]
va devenir afficher par le DOS
image01_[N1]
image01_[N2]
image02_[N2]
image02_[N1]
image03_[N1]
image03_[N2]
image04_[N1]
image04_[N2]
il suffit d'intervertir les compteurs pour que cela fonctionne
image_[N1]_01
image_[N1]_02
image_[N1]_03
image_[N1]_04
image_[N2]_01
image_[N2]_02
image_[N2]_03
image_[N2]_04
Normalement c'est ce que fait le script DOS. il renomme les fichiers selon le pattern img[CPT1]_[CPT2] ou CPT2 va de 1à 4 et CPT1 est incrémenté de 1 dès que CPT2 revient à 1.
Pour plus de sureté sur le classement la ligne

Code: Select all

FOR /R %%A IN (*.BMP;*.jpg) DO CALL :TRAITE "%%~nxA" %%~xA
peut être remplacé par

Code: Select all

FOR /F %%A IN ('dir /on *.BMP;*.jpg') DO CALL :TRAITE "%%~nxA" %%~xA
dir /on "o" classe "n" par ordre alphabétique
le script, avec des commentaires, devient :

Code: Select all

@ECHO OFF

REM initialisation
	SET /A CPT1=1
	SET /A CPT2=1

REM on prend par ordre alphabétique tous les fichiers et on en extraite le nom "%%~nxA" mis dans %1 et l'extension %%~xA mis dans %2 et on appel la fonction TRAITE 
	FOR /F %%A IN ('dir /on *.BMP;*.jpg') DO CALL :TRAITE "%%~nxA" %%~xA
REM ALLER à la fin
	GOTO :EOF

	:TRAITE
REM SI CPT1 est inférieur à 10 mettre sous la forme img0[CPT1]_[CPT2] sinon img[CPT1]_[CPT2] pour permettre un classement alphabétique 
	IF %CPT1% LSS 10 (SET FIC=img0%CPT1%_0%CPT2%%2) ELSE (SET 	FIC=img%CPT1%_0%CPT2%%2)
	ECHO renommage de %1 en %FIC%
	MOVE %1 %FIC%
REM SI CPT2 est à quatre augmenter de 1 CPT1
	IF %CPT2% EQU 4 SET /A CPT1=%CPT1%+1
REM SI CPT2 est à quatre revenir à 1 sinon l'incrémenter de 1
	IF %CPT2% EQU 4 (SET /A CPT2=1) ELSE ( SET /A CPT2=%CPT2%+1)
Je suis à votre disposition en cas de question

Cordialement,
TieFighter
Montlebert
Junior Member
Junior Member
Posts: 15
Joined: 2008-01-01, 13:50 UTC

Post by *Montlebert »

Bonjour TieFighter,

je vous remercie de votre réponse mais je n'arrive à rien, hélas !

Dans le peu que j'arrive à lire lorsque je lance le fichier cmd, c'est que le fichier 2011 est introuvable et évidemment les fichiers ne sont pas renommés.
Je suis vraiment une nullité :oops:
Cordialement.
Montlebert
Post Reply