Home

LiveCode

successeur d'Hypercard

Inverse l'ordre jour, mois, année de la date

pour les noms de fichier d'un dossier


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"



Version

- V1.0 - 9 mars 2017 téléchargement Date-Inversion.livecode.zip


Code

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






Merci
SignatureZapfino


Merci de votre visite


UP