Bonjour,
J'ai récupérer le script de renommage photos ou vidéos (tout type d'extension) pour renommer les fichiers avec la date Exiftool de création.
Script de : (de 2022)
Je met aussi une image du nommage d'origine des fichiers.

L'erreur est : error "Erreur dans Finder : Impossible d’effectuer l’opération car il existe déjà un élément de ce nom." number -48
Et l'erreur est sur la ligne
Je vous en remercie par avance. Sachant que mon but est de récupérer la date création Exif des fichiers vidéos, photos, quelques soient le type (mp4, MOV, jpg, HEIC etc...) pour renommer le fichier avec YYYY_MM_DD-HH_MM_SS-Nom d'origine. extension d'origine
J'ai récupérer le script de renommage photos ou vidéos (tout type d'extension) pour renommer les fichiers avec la date Exiftool de création.
Script de : (de 2022)
@zeltron54
Par contre, sur ce script, j'ai une erreur. Si un 'expert' pouvait m'aider. Je comprends la logic, mais pas la technique d'écriture du script.Je met aussi une image du nommage d'origine des fichiers.

L'erreur est : error "Erreur dans Finder : Impossible d’effectuer l’opération car il existe déjà un élément de ce nom." number -48
Et l'erreur est sur la ligne
Bloc de code:
set name of lefichier to newnom
AppleScript:
tell application "Finder"
set source to choose folder with prompt "Selectionner le dossier Source"
set dest to choose folder with prompt "Selectionner le dossier Destination"
make new folder at ((path to desktop folder) as string) with properties {name:"Transfert_tmp"}
set dossiertmp to (path to desktop folder) & "Transfert_tmp" as string
set les_fichiers to files of source
repeat with chaque_fichier in les_fichiers
duplicate chaque_fichier to dossiertmp
end repeat
end tell
try
do shell script "/opt/homebrew/bin/exiftool"
set exiftool_PATH to "/opt/homebrew/bin/exiftool"
on error
set exiftool_PATH to "/usr/local/bin/exiftool"
end try
tell application "Finder"
set Chemin to (path to desktop folder) & "Transfert_tmp" as string
set Chemin to Chemin as alias
end tell
tell application "Finder"
set les_fichiers to files of Chemin
repeat with chaque_fichier in les_fichiers
set lefichier to chaque_fichier
set AppleScript's text item delimiters to {""}
set nom to name of chaque_fichier
set chaque_fichier to chaque_fichier as string
try
set datephoto to do shell script exiftool_PATH & " -DateTimeOriginal " & quoted form of POSIX path of chaque_fichier
if datephoto is "" then set datephoto to do shell script exiftool_PATH & " -CreationDate " & quoted form of POSIX path of chaque_fichier
if datephoto is "" then set datephoto to do shell script exiftool_PATH & " -CreateDate " & quoted form of POSIX path of chaque_fichier
on error
set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
write "Le fichier ne contient pas de date : " & chaque_fichier & return to lelog starting at eof
close access lelog
set datephoto to ""
end try
if length of datephoto > 20 then
set x to (length of datephoto) - 33
set DateOriginale to text -x thru -1 of datephoto
set ladate to text 1 thru 5 of DateOriginale
set lannee to ladate
set ladate to ladate & text 7 thru 8 of DateOriginale
set lemois to text 7 thru 8 of DateOriginale
set ladate to ladate & text 10 thru 11 of DateOriginale
set lejour to text 10 thru 11 of DateOriginale
set ladate to ladate & text 13 thru 14 of DateOriginale
set lheure to text 13 thru 14 of DateOriginale
set ladate to ladate & text 16 thru 17 of DateOriginale
set lesminutes to text 16 thru 17 of DateOriginale
set ladate to ladate & "." & text 19 thru 20 of DateOriginale
set lessecondes to text 19 thru 20 of DateOriginale
set newnom to lannee & "_" & lemois & "_" & lejour & "-" & lheure & "_" & lesminutes & "_" & lessecondes & "_" & nom
set xxx to ladate as string
if xxx is " 000000000000.00" then
-- Ecrit un fichier erreur sur le bureau si erreur chargement date(=0000...)
set lelog to open for access ((path to desktop folder as text) & "les erreurs.txt") as text with write permission
write "Le fichier ne contient pas de date : " & chaque_fichier & return to lelog starting at eof
close access lelog
else
do shell script "touch -t " & ladate & " " & quoted form of POSIX path of chaque_fichier
end if
end if
set name of lefichier to newnom
end repeat
end tell
tell application "Finder"
set source to dossiertmp as alias
set les_fichiers to files of source
end tell
set test1 to current date
set dernierdossier to ""
repeat with chaque_fichier in les_fichiers
set lefichier to chaque_fichier as string
set datephoto to do shell script exiftool_PATH & " -DateTimeOriginal " & quoted form of POSIX path of lefichier
if datephoto is "" then set datephoto to do shell script exiftool_PATH & " -CreationDate " & quoted form of POSIX path of lefichier
if datephoto is "" then set datephoto to do shell script exiftool_PATH & " -CreateDate " & quoted form of POSIX path of lefichier
if length of datephoto > 20 then
set x to (length of datephoto) - 33
set DateOriginale to text -x thru -1 of datephoto
set ladate to text 2 thru 5 of DateOriginale
set lannee to ladate
set ladate to ladate & text 7 thru 8 of DateOriginale
set lemois to text 7 thru 8 of DateOriginale
set ladate to ladate & text 10 thru 11 of DateOriginale
set lejour to text 10 thru 11 of DateOriginale
set ladate to ladate & text 13 thru 14 of DateOriginale
set lheure to text 13 thru 14 of DateOriginale
set ladate to ladate & text 16 thru 17 of DateOriginale
set lesminutes to text 16 thru 17 of DateOriginale
set ladate to ladate & "." & text 19 thru 20 of DateOriginale
set lessecondes to text 19 thru 20 of DateOriginale
set ladate to ladate as string
end if
set datetest to date (lejour & "/" & lemois & "/" & lannee & " " & lheure & ":" & lesminutes & ":" & lessecondes)
set dif to datetest - test1
tell application "Finder"
if dif < 1200 then
set lenom to lannee & "-" & lemois & "-" & lejour
set dossierdest to ((dest as string) & lenom)
if dernierdossier is not "" then
set dossierdest to dernierdossier
end if
if not (exists folder dossierdest) then
make new folder at dest with properties {name:lenom}
end if
move lefichier to dossierdest
set dernierdossier to dossierdest
else
set lenom to lannee & "-" & lemois & "-" & lejour
set dossierdest to ((dest as string) & lenom)
set numero to 1
set newnom to lenom
repeat
if exists dossierdest then
set newnom to lenom & "_" & numero
set dossierdest to ((dest as string) & newnom)
set numero to numero + 1
else
set lenom to newnom
exit repeat
end if
end repeat
make new folder at dest with properties {name:lenom}
move lefichier to dossierdest
set dernierdossier to dossierdest
end if
end tell
set test1 to datetest
end repeat
tell application "Finder"
delete dossiertmp
activate
(display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
Dernière édition: