Code : Tout sélectionner
#include <extprop.au3>
#include <array.au3>
$NombreFichiersModifies = 0
$modeleParDefaut = "AAAA-MM-DD HHhMNmSE (APN)"
$modele = InputBox("Renommer les fichiers Image avec la date de prise de vue", _
@CRLF & "Ce petit outil sert à renommer les fichiers d'appareils photos numériques avec la date de prise de vue et les informations issues des propriétés du fichier (dimensions, nom de l'appareil photo)." _
& @CRLF & "Dans la fenêtre suivante, vous sélectionnerez les fichiers à modifier." & @CRLF _
& @CRLF & "Indiquez ci-dessous le format à appliquer à chaque nom de fichier. Les valeurs suivantes seront remplacées par leur équivalent (respecter les majuscules pour les variables soient prises en compte). Elles sont facultatives." & @CRLF _
& @CRLF & "Si des noms fichiers sont identiques, un numéro sera ajouté à la fin, de la forme : -1, -2 etc." & @CRLF & @CRLF _
& @TAB & "AAAA : " & @TAB & "......" & @TAB & "Année" & @CRLF _
& @TAB & "MM : " & @TAB & "......" & @TAB & "Mois" & @CRLF _
& @TAB & "DD : " & @TAB & "......" & @TAB & "Jour" & @CRLF _
& @TAB & "HH : " & @TAB & "......" & @TAB & "Heures" & @CRLF _
& @TAB & "MN : " & @TAB & "......" & @TAB & "Minutes" & @CRLF _
& @TAB & "SE : " & @TAB & "......" & @TAB & "Secondes" & @CRLF _
& @TAB & "APN : " & @TAB & "......" & @TAB & "Nom de l'appareil photo numérique" & @CRLF _
& @TAB & "DIM : " & @TAB & "......" & @TAB & "Dimensions de l'image (en pixels)" & @CRLF _
& @TAB & "NOM : " & @TAB & "......" & @TAB & "Nom existant du fichier" & @CRLF _
& @TAB & "NUM : " & @TAB & "......" & @TAB & "Compteur (de 1 à total des photos)" & @CRLF _
& @TAB & "TAILLE : " & "......" & @TAB & "Taille de l'image (en kilo-octets)" & @CRLF _
& @CRLF & @CRLF & "Exemple : " & @TAB & "AAAA-MM-DD HHhMNmSE - NUM - Anniversaire NOM - DIM (APN) " & @CRLF & "donnera : " & @TAB & "2007-03-14 17h28m30 - 1 - Anniversaire 28 ans- 2304x1728 (Pentax Optio S4i).jpg" _
, $modeleParDefaut, "", 700, 450, Default, Default)
If @error then Exit
$CheminOrigine = FileOpenDialog("Sélectionnez les fichiers à renommer", @ScriptDir & "\", "Images (*.jpg)", 1 + 4 )
If @error Then Exit
$Fichiers = StringSplit($CheminOrigine, "|")
;_ArrayDisplay($Fichiers,"Property Array")
For $i = 1 to $Fichiers[0]
;_ArrayDisplay($Fichiers, "Boucle " & $i)
If $Fichiers[0] = 1 Then $CheminOrigine = $Fichiers[1]
If $Fichiers[0] > 1 Then $CheminOrigine = $Fichiers[1] & "\" & $Fichiers[$i + 1]
;SplashTextOn("Renommage du fichier " & $i & " sur " & $Fichiers[0] - 1, "Renommage du fichier : " & @CRLF & @CRLF & $CheminOrigine, 700, 100, -1, -1, 2 + 16+ 32, "Tahoma", 9)
$prop = _GetExtProperty($CheminOrigine, -1)
If @error Then
MsgBox(48, "Erreur", "Erreur de lecture des propriétés du fichier " & $CheminOrigine)
ContinueLoop
EndIf
$AppareilPhoto = StringStripWS($prop[24], 1 + 2)
$DatePriseDeVue = $prop[31]
$Dimensions = StringStripWS($prop[26], 8)
$Taille = StringStripWS($prop[1], 1 + 2)
;_ArrayDisplay($prop, "Property Array")
$NomFichierOrigine = ""
$NomFichierOrigine = StringMid($CheminOrigine, StringInStr($CheminOrigine, "\", 0, -1) + 1)
$NomFichierOrigine = StringStripWS(StringMid($NomFichierOrigine, 1, StringLen($NomFichierOrigine) - 4), 1 + 2)
If $i < 10 Then
$num = "0" & $i
Else
$num = $i
EndIf
$yy = StringMid($DatePriseDeVue, 1, 4)
$mm = StringMid($DatePriseDeVue, 6, 2)
$dd = StringMid($DatePriseDeVue, 9, 2)
$hh = StringMid($DatePriseDeVue, 12, 2)
$mn = StringMid($DatePriseDeVue, 15, 2)
$se = StringMid($DatePriseDeVue, 18, 2)
;$CheminDestination = $yy & "-" & $mm & "-" & $dd & " " & $hh & "h" & $mn & "m" & $se
;$CheminDestination &= " (" & $AppareilPhoto & ")"
$CheminDestination = $modele
$CheminDestination = StringReplace($CheminDestination, "AAAA", $yy, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "MM", $mm, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "DD", $dd, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "HH", $hh, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "MN", $mn, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "SE", $se, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "NOM", $NomFichierOrigine, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "APN", $AppareilPhoto, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "DIM", $Dimensions, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "NUM", $num, 1, 1)
$CheminDestination = StringReplace($CheminDestination, "TAILLE", $Taille, 1, 1)
; on ajoute l'arboresence car le split l'a découpée
If $Fichiers[0] > 1 Then $CheminDestination = $Fichiers[1] & "\" & $CheminDestination
; si le fichier existe déjà
$initCompteur = 2
$compteur = $initCompteur
While $Fichiers[0] > 1 And FileExists($CheminDestination & StringRight($CheminOrigine, 4))
;MsgBox(0, "Fichiers identiques", "Le fichier " & $CheminDestination & StringRight($CheminOrigine, 4) & " sera renommé en : " & @CRLF & $CheminDestination & "-" & $initCompteur - 1 & StringRight($CheminOrigine, 4))
If $compteur = $initCompteur Then FileMove($CheminDestination & StringRight($CheminOrigine, 4), $CheminDestination & "-" & $initCompteur - 1 & StringLower(StringRight($CheminOrigine, 4)))
$CheminDestination &= "-" & $compteur
$compteur += 1
WEnd
; on met l'extension en minuscule
Select
Case StringRight($CheminOrigine, 4) = ".jpg" Or StringRight($CheminOrigine, 4) = ".jpeg"
$CheminDestination &= ".jpg"
Case StringRight($CheminOrigine, 4) = ".bmp"
$CheminDestination &= ".bmp"
Case StringRight($CheminOrigine, 4) = ".avi"
$CheminDestination &= ".avi"
Case StringRight($CheminOrigine, 4) = ".mpg"
$CheminDestination &= ".mpg"
Case StringRight($CheminOrigine, 4) = ".wmv"
$CheminDestination &= ".wmv"
Case StringRight($CheminOrigine, 4) = ".mov"
$CheminDestination &= ".mov"
Case Else
$CheminDestination &= StringRight($CheminOrigine, 4)
EndSelect
SplashTextOn("Renommage du fichier " & $i & " sur " & $Fichiers[0] - 1, "Modification du nom de fichier " & @CRLF & $CheminOrigine & @CRLF & @CRLF & "en : " & @CRLF & $CheminDestination, 900, 200, -1, -1, 2 + 16+ 32, "Tahoma", 9)
If not FileMove($CheminOrigine, $CheminDestination, 1) Then
MsgBox(48, "Erreur", "Erreur de modification du nom de fichier " & @CRLF & $CheminOrigine & @CRLF & @CRLF & "en : " & @CRLF & $CheminDestination)
Else
$NombreFichiersModifies += 1
EndIf
SplashOff()
If $Fichiers[0] = 1 Then ExitLoop
If $i + 1 = $Fichiers[0] Then ExitLoop
Next
If $Fichiers[0] = 1 Then $NombreFichiersAModifier = 1
If $Fichiers[0] > 1 Then $NombreFichiersAModifier = $Fichiers[0] - 1
If $NombreFichiersModifies <> $NombreFichiersAModifier Then
MsgBox(48, "Erreur", "Erreur : Vous avez sélectionné " & $NombreFichiersAModifier & " fichiers à renommer, et " & $NombreFichiersModifies & " fichiers ont été réélement renommés.")
EndIf