Ce programme transforme tous les noms de fichier d'un dossier donné de "toto 01.04.2017" en "2017-04-01 toto".
La date en début et inversée en année mois jour, pour un tri correct dans le Finder.
Gère les mois et les jours sur un ou deux caractères "toto 1.4.2017" ou "toto 01.04.2017"
Résultat par sécurité dans un dossier séparé "nomdudossierBis"
Ne traite que les fichiers de données .jpg .txt .... pas les applications.
Fonctionne quel que soit le séparateur dans la date entre jour, mois, année.
Fonctionne même si le séparateur existe dans le titre "toto.tata 01.04.2017", pour cela il n'est pas utilisé une technique d'offset, mais une recherche de chiffres en partant de la droite vers la gauche.
Pour faciliter l'adaptation à d'autres cas, la logique de modification du nom de fichier est dans une routine indépendante function "changeFileName"
- V1.0 - 9 mars 2017 téléchargement Date-Inversion.livecode.zip
local separateur = "_" -- Caractère de séparation résultat
on mouseUp
put the defaultFolder into intitialDefaultFolder -- save
answer folder "Selectionnez le dossier à traiter dans Finder"
if the result is "cancel" then exit mouseUp
/Users/alg/Documents/nomdudossier-->else put it into folderPath --> /Users/alg/Documents/nomdudossier
set the defaultFolder to folderPath
put the files into listFileName -- La liste de tous les noms de fichiers
-- Suppression des fichiers systèmes (.DS_Store, etc)
repeat with i = 1 to the number of lines of listFileName
if the first char of line i of listFileName is "."
then delete line i of listFileName
end repeat
-- Create the new folder container "nomdudossierBis"
put folderPath &"Bis" into folderPathBis
if there is no folder folderPathBis
then create folder folderPathBis
else alreadyExist
-- Define the complet folder path for URL command
put "binfile:" & folderPath & slash into folderDepart -- "binfile:/Users/alg/Desktop/aTest/"
put "binfile:" & folderPath & "Bis" & slash into folderToCopy -- "binfile:/Users/alg/Desktop/aTestBis/"
-- Copy and change file name
repeat with i = 1 to the number of lines of listFileName
put line i of listFileName into oneFileName
put changeFileName (oneFileName) into oneFileNameNew -- change file name
put url(folderDepart & oneFileName) into url(folderToCopy & oneFileNameNew) -- Copy the file
end repeat
set the defaultFolder to intitialDefaultFolder -- Restaure
revSpeak “Done”
answer i & " fichiers ont été traités" & return & "du dossier " & folderPath & return & "Résultat dans " & folderPathBis
put listFileName into card field "working"
send mouseUp to button "show working"
end mouseUp
function changeFileName oneFileName ---------------------------------
-- Ici tout ce que vous voulez modifier sur le nom de fichier
repeat with k = the number of chars of oneFileName down to 1 -- From last to first
if char k of oneFileName is "." then exit repeat
else
delete
char
k of
oneFileName --
end repeat
delete last char of oneFileName -- le point de .jpg reste "nom 02.08.2017"
--année
put the number of chars of oneFileName into lastChar
put char lastChar-3 to lastChar of oneFileName into annee
delete char lastChar-4 to lastChar of oneFileName -- reste "nom 02.08" ou "nom 2.8"
--mois
put the number of chars of oneFileName into lastChar
if char lastChar-1 of oneFileName is in "0,1,2,3,4,5,6,7,8,9" then -- mois à 2 chiffres .08
put char lastChar-1 to lastChar of oneFileName into mois
delete char lastChar-2 to lastChar of oneFileName -- reste "nom 02"
else
put char lastChar of oneFileName into mois -- mois à 1 chiffre .8
delete char lastChar-1 to lastChar of oneFileName
end if
--jour
put the number of chars of oneFileName into lastChar
if char lastChar-1 of oneFileName is in "0,1,2,3,4,5,6,7,8,9" then --"nom 02"
put char lastChar-1 to lastChar of oneFileName into jour
delete char lastChar-1 to lastChar of oneFileName
else
put char lastChar of oneFileName into jour --"nom 2"
delete char lastChar of oneFileName
end if
delete last char of oneFileName -- le blanc
put annee & separateur & mois & separateur & jour & " " &oneFileName into oneFileNameNew
put oneFileNameNew into msg -- debug
return oneFileNameNew
end changeFileName
on alreadyExist
answer "The folder already exit, do you want to continu" with "Yes" or "Cancel"
if it is "Cancel" then exit Hypercard
end alreadyExist