[R] Renommage en masse par inversion de lettre
Règles du forum
- Merci de consulter la section "Règles du forum" et plus particulièrement "Règles et Mentions Légales du site autoitscript.fr" avant d'écrire un message.
[R] Renommage en masse par inversion de lettre
Bonjour;
Je souhaiterai que vous me veniez en aide pour un script de renommage de photo en masse.
Je possède un LG Viewty et il n'ont rien trouvé de mieux que de faire un nommage de photo en jj/mm/aa.
Ce qui fait que dans un même dossier les fichiers sont triés par jours, et donc toute les photos du 05 que ce soit janvier avril ou décembre se suivent, et ensuite vienne les photos du 06 etc etc... Bref pas super pour du tri ou du rangement sur un FTP.
Voici un exemple d'un nom de photo; P120509_09.35
Soit Pjjmmaa_hh.mn (Avec; P une lettre fixe, jj le jour, mm le mois, aa l'année, hh l'heure et mn la minute)
Je souhaiterai que les photos soient renommée comme suit:
Paammjj_hh.mm; donc un décalage dans les lettres entre l'année, le mois et le jour.
Si vous souhaitez supprimer le P du début je n'y voit pas d'inconvénient au contraire, il ne correspond à rien et donc ne sert pas au triage.
Informations supplémentaires;
Si une photo est prise à la même date et à la même minute, voici comme elle sont nommé
P120509_09.35 - Pour la première,
P120509_09.35[01] - Pour la seconde,
P120509_09.35[02] - Pour la troisième,
Et ainsi de suite, Il en résulte qu'une photo n'a pas un nombre fixe de caractère, je ne sais pas si ca vous est utile mais comme ca c'est signalé.
Ce nommage me plait assez, il permet de laisser un ordre, donc dans la mesure du possible j'aimerai qu'il soit gardé.
L'extension des fichiers est en JPG (en majuscule) - Pareil, je ne sais pas si ca vous est utile mais bon.
Si il vous faut des informations supplémentaire, il suffit de demander.
Je vous remercie d'avance pour toute l'aide que vous pourriez m'apporter sur la réalisation d'un tel script.
Bonne journée à vous tous.
CortX
Je souhaiterai que vous me veniez en aide pour un script de renommage de photo en masse.
Je possède un LG Viewty et il n'ont rien trouvé de mieux que de faire un nommage de photo en jj/mm/aa.
Ce qui fait que dans un même dossier les fichiers sont triés par jours, et donc toute les photos du 05 que ce soit janvier avril ou décembre se suivent, et ensuite vienne les photos du 06 etc etc... Bref pas super pour du tri ou du rangement sur un FTP.
Voici un exemple d'un nom de photo; P120509_09.35
Soit Pjjmmaa_hh.mn (Avec; P une lettre fixe, jj le jour, mm le mois, aa l'année, hh l'heure et mn la minute)
Je souhaiterai que les photos soient renommée comme suit:
Paammjj_hh.mm; donc un décalage dans les lettres entre l'année, le mois et le jour.
Si vous souhaitez supprimer le P du début je n'y voit pas d'inconvénient au contraire, il ne correspond à rien et donc ne sert pas au triage.
Informations supplémentaires;
Si une photo est prise à la même date et à la même minute, voici comme elle sont nommé
P120509_09.35 - Pour la première,
P120509_09.35[01] - Pour la seconde,
P120509_09.35[02] - Pour la troisième,
Et ainsi de suite, Il en résulte qu'une photo n'a pas un nombre fixe de caractère, je ne sais pas si ca vous est utile mais comme ca c'est signalé.
Ce nommage me plait assez, il permet de laisser un ordre, donc dans la mesure du possible j'aimerai qu'il soit gardé.
L'extension des fichiers est en JPG (en majuscule) - Pareil, je ne sais pas si ca vous est utile mais bon.
Si il vous faut des informations supplémentaire, il suffit de demander.
Je vous remercie d'avance pour toute l'aide que vous pourriez m'apporter sur la réalisation d'un tel script.
Bonne journée à vous tous.
CortX
Modifié en dernier par cortx le mer. 02 sept. 2009 16:34, modifié 1 fois.
Re: [...] Renommage en masse par inversion de lettre
J'avais deja posté un exemple de renommage en masse.
Va voir dans la partie EXEMPLE et cherche
ca peut t'aider pour une grosse partie de ton scrip.
Edit : Bonne poire Aujourd'hui: http://www.autoitscript.fr/forum/viewto ... f=6&t=1506
Après pour le renommage pur, il va falloir utiliser du RegExpReplace() Bon courage
Va voir dans la partie EXEMPLE et cherche
Edit : Bonne poire Aujourd'hui: http://www.autoitscript.fr/forum/viewto ... f=6&t=1506
Après pour le renommage pur, il va falloir utiliser du RegExpReplace() Bon courage
Re: [...] Renommage en masse par inversion de lettre
Merci beaucoup, déjà ca me donne la base pour la modification d'un répertoire.
La suis en train de m'éplucher la liste des fonction à la recherche d'une fonction capable de sortir un nombre de lettre à partir d'un champ donnée.
Je passerai tout ca en variable et apres je reconstruirai le nom et le fichier.
Mon idée est sur la bonne voie ou rien à voir du tout j'y arriverai pas comme ca ?
Edit;
J'ai réussi à trier comme je le souhaite les lettres d'un mot donné.
Par contre j'ai énormément de mal à l'intégrer dans le code que tu m'a fournit (récupération du nom du fichier en cours, replacement du nouveau nom et enregistrement de celui ci).
Est ce que quelqu'un pourrait faire l'intégration pour moi s'il vous plait avec le renommage du fichier, car comme on peux le voir dans mon code je suppose, la programmation et moi ca fait deux, et je fait au plus simple pour ma compréhension.
Merci
La suis en train de m'éplucher la liste des fonction à la recherche d'une fonction capable de sortir un nombre de lettre à partir d'un champ donnée.
Je passerai tout ca en variable et apres je reconstruirai le nom et le fichier.
Mon idée est sur la bonne voie ou rien à voir du tout j'y arriverai pas comme ca ?
Edit;
J'ai réussi à trier comme je le souhaite les lettres d'un mot donné.
Par contre j'ai énormément de mal à l'intégrer dans le code que tu m'a fournit (récupération du nom du fichier en cours, replacement du nouveau nom et enregistrement de celui ci).
Est ce que quelqu'un pourrait faire l'intégration pour moi s'il vous plait avec le renommage du fichier, car comme on peux le voir dans mon code je suppose, la programmation et moi ca fait deux, et je fait au plus simple pour ma compréhension.
► Afficher le texte
Re: [...] Renommage en masse par inversion de lettre
Bon voila comme j'ai pas trop le temps de me pencher sur le StringRegExp, je n'ai pas codé la vérification du nom du fichier afin qu'il respecte bien le pattern que tu nous as donné (Pjjmmaa_hh.mn).
Code : Tout sélectionner
#include <Array.au3>
#Include <File.au3>
Local $directory = "C:\x" ; Repertoire qui contient les images à renommer
Local $jpg_list = _FileListToArray($directory, "*.jpg", 1) ; Selectionne uniquement les fichiers d'extention *.jpg
Local $rename_current
Local $rename_save = ""
If( IsArray($jpg_list) ) Then
For $i=1 To $jpg_list[0] Step 1
; Sauvegarde de l'ancienne nomenclature dans le sous-repertoire "..\savefile_with_oldname"
FileCopy($directory&"\"&$jpg_list[$i], $directory&"\file_with_oldname\",9)
; Vérfication de la nomencalture, ie que le fichier est bien sous la forme "Pjjmmaa_hh.mn.jpg"
; Pas fait... On suppose que les fichiers à renommer soit bien sous cette forme.
$jour = StringMid($jpg_list[$i], 2, 2)
$mois = StringMid($jpg_list[$i], 4, 2)
$annee = StringMid($jpg_list[$i], 6, 2)
$heure = StringMid($jpg_list[$i], 9, 2)
$min = StringMid($jpg_list[$i], 12, 2)
; Ecriture du nouveau nom, on vérifie qu'il n'existe pas déjà
$rename_current = "P_"&$annee&$mois&$jour&"_"&$heure&"."&$min
If( $rename_current = $rename_save ) Then
$rename_current = $rename_current&"_["&$count_string&"]"
$count = $count+1
If( $count < 10 ) Then
$count_string = "0"&$count
Else
$count_string = $count
EndIf
Else
$count = 1
$count_string = "0"&$count
EndIf
$rename_save = "P_"&$annee&$mois&$jour&"_"&$heure&"."&$min
FileMove($directory&"\"&$jpg_list[$i], $directory&"\"&$rename_current&".jpg", 9)
Next
EndIfRe: [...] Renommage en masse par inversion de lettre
ARG que c'est pas beau a voir
Peut doit être remplacer par
Ou encore
Sinon le code de 20100 est très bien. On pourrait remplacer par un Patten, mais si ca marche...
Code : Tout sélectionner
If $count = 1 Then
$var21=$var
$var11=$var
else
if $count = 2 Then
$var26=$var
$var12=$var
else
if $count = 3 Then
$var27=$var
$var13=$var
else
if $count = 4 Then
$var24=$var
$var14=$var
else
if $count = 5 Then
$var25=$var
$var15=$var
else
if $count = 6 Then
$var22=$var
$var16=$var
else
if $count = 7 Then
$var23=$var
$var17=$var
EndIf
EndIf
EndIf
EndIf
EndIf
EndIf
EndIfCode : Tout sélectionner
Switch $count
Case 1
...
Case 2
...
Case 3
...
Case 4
...
Case 5
...
Case 6
...
EndSwitchCode : Tout sélectionner
If $count = 1 ... Then
ElseIf ... Then
ElseIf ... Then
Else
EndIFSinon le code de 20100 est très bien. On pourrait remplacer par un Patten, mais si ca marche...
Re: [...] Renommage en masse par inversion de lettre
Merci beaucoup 20100.
Ça marche à la perfection, et effectivement le code n'a rien à voir avec le mien
Juste pour mon information, quel est la différence entre mon code à ralonge et le second que propose timmalos
Il y aura toujours le même nombre d'instruction, hormis que j'ai décomposé le elseif non ?
En tout cas, un énorme merci pour tout ca.
Edit: Je me suis permis d'apporter deux modifications.
Retirer le _ après le P
Et ensuite pour s'assurer que les fichier pris en compte soit bien les P* j'ai rajouté cela dans la création de la liste.
Malheureusement les fichiers Photoxx étaient aussi pris en compte donc j'ai mis le _ aussi.
JLocal $jpg_list = _FileListToArray($directory, "P*_*.jpg", 1)
Voila c'était juste pour informations.
Encore mille merci.
Ça marche à la perfection, et effectivement le code n'a rien à voir avec le mien
Juste pour mon information, quel est la différence entre mon code à ralonge et le second que propose timmalos
Il y aura toujours le même nombre d'instruction, hormis que j'ai décomposé le elseif non ?
En tout cas, un énorme merci pour tout ca.
Edit: Je me suis permis d'apporter deux modifications.
Retirer le _ après le P
Et ensuite pour s'assurer que les fichier pris en compte soit bien les P* j'ai rajouté cela dans la création de la liste.
Malheureusement les fichiers Photoxx étaient aussi pris en compte donc j'ai mis le _ aussi.
JLocal $jpg_list = _FileListToArray($directory, "P*_*.jpg", 1)
Voila c'était juste pour informations.
Encore mille merci.
Re: [...] Renommage en masse par inversion de lettre
Quand un post est résolu, merci de le mettre en éditant votre premier message avec [R]
La seule différence c'est que c'est bien plus propre, et que quand vous voulez que quelqu'un derriere lise votre post, il faut que le code soit propre sinon on aura pas envie et quelque fois on passe au Post suivant
La seule différence c'est que c'est bien plus propre, et que quand vous voulez que quelqu'un derriere lise votre post, il faut que le code soit propre sinon on aura pas envie et quelque fois on passe au Post suivant
Re: [R] Renommage en masse par inversion de lettre
Heu le temps du COBOLD ou du Basic est désormais révolue, comme le précise timmalos c'est essentiellement pour la lecture de ton code source. Néanmoins pour faciliter la lecture il vaut mieux utiliser du if, elseif, elseif, else. Sinon une petite remarque il vaut mieux utiliser un Switch quand c'est possible afin d'améliorer les performances. En effet une structure en switch est plus performante qu'une structure en elseif car cette dernière doit testé chacune des conditions les unes après les autres et doit donc évalué chaque condition jusqu'à trouvé une correspondance, ce qui n'est pas le cas d'un switch qui permet une sortie plus rapide...Juste pour mon information, quel est la différence entre mon code à ralonge et le second que propose timmalos. Il y aura toujours le même nombre d'instruction, hormis que j'ai décomposé le elseif non ?
► Afficher le texte



