Aide aux divers cours ou à votre activité - Bruno GADRAT
Pour ranger les fichiers toujours de la même façon
Évaluez bien votre façon de faire avant d'utiliser ce genre de script
On peut faire ranger tous les fichiers d'un projet par l'ordinateur.
Mais ce n'est pas parce que tout est possible que l'on doit forcément tout faire.
Ce script est à lancer depuis le menu script ou par une action de dossier.
Il prend les fichiers et les range dans les sous-dossiers voulus en les renommant au besoin.
C'est juste une source d'inspiration. Faites des essais sur un projet factice avec des copies de fichiers avant de vous lancer dans l'aventure.
-- Applescript - Petits bouts de programmes utiles par B.Gadrat - 6 janvier 2010
-- Range les fichiers du projet dans des sous-dossiers avec des variantes selon les types de fichier
-- le projet est le dossier sur lequel on applique ce script
-- le début du nom du dossier est utilisé pour nommer les sous-dossiers
-- pour certains types de fichier on change aussi leur nom pour les classer par date
-- adaptez les catégories, les sous-répertoires et les noms de fichiers selon vos besoins
-- Copier ce code dans l'éditeur de script et enregistrez-le comme application
-- Placez le dans le dossier Library/Scripts/Folder Action scripts/ pour vous en servir comme action de dossier
-- Faites un alias dans le dossier Library/Scripts/ pour l'appeler à partir du menu script
-- Posez la sur le dock pour vous en servir comme droplet
-- Fonction qui trie les fichiers
on triele(dossierchoisi)
tell application "Finder"
set liste to list folder dossierchoisi without invisibles -- Fais la liste des fichiers et dossier sans les fichiers cachés pour taiter l'ensemble du contenu et pas seulement les fichiers ajoutés
repeat with i in liste -- Pour chaque élément de la liste
set elementDuDossier to (item i of folder dossierchoisi) as alias -- Met en mémoire l'élément
set typeDeFichier to kind of elementDuDossier
set extensionFichier to name extension of elementDuDossier
if typeDeFichier is in {"folder", "dossier"} then -- Si c'est un dossier
-- my rangeDossier(elementDuDossier,dossierchoisi) -- Ne rien faire (elementDuDossier est un alias)
else if typeDeFichier is in {"Image JPEG", "Adobe Photoshop GIF file", "Adobe Photoshop JPEG file"} or extensionFichier is in {"jpg", "JPG", "gif", "GIF", "png", "PNG"} then
my rangeImage(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"Fichier texte brut", "Document RTFD (RTF avec pièces jointes)", "com.apple.appleworks.document"} or extensionFichier is in {"doc", "DOC", "txt", "TXT", "odt", "ODT"} then
my rangeTexte(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"Document PDF"} then
my rangePDF(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"SketchUp Document"} then
my range3D(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"PowerCADD Drawing"} then
my rangePlan(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {""} or extensionFichier is in {"xl", "XL", "xls", "XLS", "ods", "ODS"} then
my rangeFeuilleDeCalcul(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {""} or extensionFichier is in {"ppt", "PPT", "odp", "ODP"} then
my rangePresentation(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"Alias", "Adresse Internet du Web"} or extensionFichier is in {"ref", "REF"} then
my rangeReference(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"HTML"} or extensionFichier is in {"htm", "HTM", "xml"} then
my rangeHTML(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"Style Sheet"} or extensionFichier is in {"css", "CSS"} then
my rangeCSS(elementDuDossier, dossierchoisi)
else if typeDeFichier is in {"application", "Script"} then
my rangeApplication(elementDuDossier, dossierchoisi)
else -- en dernier recours
my rangeAutresFichiers(elementDuDossier, dossierchoisi)
end if
end repeat
end tell
end triele
-- Fonction qui s'occupe des dossiers
on rangeDossier(ceDossier, dossierchoisi)
-- display dialog ("Je suis un dossier " & return & ceDossier as string)
end rangeDossier
-- Fonction qui s'occupe des images rangement selon la date de création du fichier
-- /projet-images/201001-janvier/fichier.jpg
on rangeImage(cetteimage, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set dateCreation to creation date of cetteimage -- Met en mémoire la date de creation du fichier
set anneeCreation to year of dateCreation as string -- Extrait l'année sous forme de chaine
set moisCreation to month of dateCreation as string -- Extrait le mois sous forme de chaine
set moisCreationTraductions to my traduit(moisCreation) -- Cherche les traductions disponibles
set moisCreationChiffre to item 1 of moisCreationTraductions -- Change le mois en chaîne de 2 chiffres
set moisCreation3Lettres to item 2 of moisCreationTraductions -- Change le mois en chaîne de 3 ou 4 lettres
set moisCreationToutesLettres to item 3 of moisCreationTraductions -- Change le mois par sa traduction en toutes lettres
set jourCreation to day of dateCreation -- Extrait le jour sous forme de nombre
set jourCreationChiffre to my changeJourEn2Chiffres(jourCreation) -- Change le jour en chaîne de 2 chiffres
-- Création du nom du sous dossier
set sousDossier to projet & "-images"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
-- set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
-- Création du nom du sous-sous-dossier vous pouvez utiliser toutes les variables précédement définies
set soussousDossier to anneeCreation & moisCreationChiffre & "-" & moisCreationToutesLettres
if not (exists folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier avec le type de fichier n'existe pas
make new folder at folder sousDossier of dossierchoisi with properties {name:soussousDossier} -- Crée le dossier
end if
set cheminSousSousDossier to ((dossierchoisi as string) & sousDossier & ":" & soussousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cetteimage to folder cheminSousSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeImage
-- Fonction qui s'occupe des textes rangement selon le type du fichier
-- /projet-textes/fichier.doc
on rangeTexte(ceTexte, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-textes"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move ceTexte to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeTexte
-- Fonction qui s'occupe des PDF rangement selon le type du fichier le fichier est renomé avec le nom du prijet et la date de modification du fichier
-- /projet-PDF/projet-20100106-fichier.pdf
on rangePDF(cePDF, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-PDF"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
set dateModif to modification date of cePDF -- Met en mémoire la date de modification du fichier
set anneeModif to year of dateModif as string -- Extrait l'année sous forme de chaine
set moisModif to month of dateModif as string -- Extrait le mois sous forme de chaine
set moisModifTraductions to my traduit(moisModif) -- Cherche les traductions disponibles
set moisModifChiffre to item 1 of moisModifTraductions -- Change le mois en chaîne de 2 chiffres
set moisModif3Lettres to item 2 of moisModifTraductions -- Change le mois en chaîne de 3 ou 4 lettres
set moisModifToutesLettres to item 3 of moisModifTraductions -- Change le mois par sa traduction en toutes lettres
set jourModif to day of dateModif -- Extrait le jour sous forme de nombre
set jourModifChiffre to my changeJourEn2Chiffres(jourModif) -- Change le jour en chaîne de 2 chiffres
set nomfichierinitial to name of cePDF as string
set nomFichierNettoye to nomfichierinitial -- Pour garder le nom initial
-- Si des caractères sont inutiles on peut les supprimer ou les remplacer
set nomFichierNettoye to my nettoieLeNom(nomfichierinitial, "DSCN", "")
-- Pour ne pas renommer les fichiers déjà nommés par projet
if projet is in nomFichierNettoye then
-- display dialog ("nom correct: " & nomFichierNettoye)
else
-- display dialog ("nom incomplet: " & nomFichierNettoye)
set nouveauNomFichier to (projet & "-" & anneeModif & moisModifChiffre & jourModifChiffre & "-" & nomFichierNettoye) -- Ou plus long
my Renome(cePDF, nouveauNomFichier)
end if
try -- evite l'arrêt si le fichier existe déjà à destination
move cePDF to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangePDF
-- Fonction qui s'occupe des 3D rangement selon le type du fichier
-- /projet-3D/fichier.skp
on range3D(ce3D, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-3D"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move ce3D to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end range3D
-- Fonction qui s'occupe des plans rangement selon le type du fichier
-- /projet-plans/plan-cad
on rangePlan(cePlan, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-plans"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cePlan to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangePlan
-- Fonction qui s'occupe des feuilles de calcul rangement selon le type du fichier
-- /projet-calculs/fichier.xls
on rangeFeuilleDeCalcul(cetteFeuilleDeCalcul, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-calculs"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cetteFeuilleDeCalcul to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeFeuilleDeCalcul
-- Fonction qui s'occupe des Présentations type powerpoint rangement selon le type du fichier
-- /projet-presentations/fichier.ppt
on rangePresentation(cettePresentation, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-presentations"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cettePresentation to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangePresentation
-- Fonction qui s'occupe des références rangement selon le type de référence sur l'ordi ou sur internet
-- /projet-references/projet-refInternet/adresse.webloc
on rangeReference(cetteReference, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-references"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
-- Création du nom du sous-sous-dossier vous pouvez utiliser toutes les variables précédement définies
if kind of cetteReference is in {"Adresse Internet du Web"} then
set soussousDossier to projet & "-refInternet"
else
set soussousDossier to projet & "-refSurLOrdi"
end if
if not (exists folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier avec le type de fichier n'existe pas
make new folder at folder sousDossier of dossierchoisi with properties {name:soussousDossier} -- Crée le dossier
end if
set cheminSousSousDossier to ((dossierchoisi as string) & sousDossier & ":" & soussousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cetteReference to folder cheminSousSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeReference
-- Fonction qui s'occupe des aplications rangement selon le type du fichier
-- /projet-applications/application.app
on rangeApplication(cetteApplication, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-applications"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cetteApplication to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeApplication
-- Fonction qui s'occupe les css rangement dans un répertoire HTML-CSS et un sous-répertoire avec le premier nom du fichier
-- /projet-HTML-CSS/css/monstyle/monstyle-bleu.app
on rangeCSS(cefichierweb, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-HTML-CSS"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
-- Création du nom du sous-sous-dossier selon l'extension
set extensionFichier to name extension of cefichierweb
set soussousDossier to extensionFichier
if not (exists folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier n'existe pas
make new folder at folder sousDossier of dossierchoisi with properties {name:soussousDossier} -- Crée le dossier
end if
-- Création du nom du sous-sous-sous-dossier selon le nom du fichier
set sonnom to name of cefichierweb
set arret to length of sonnom
set sonnomjusquaupoint to ""
set i to 1
repeat until (i = arret)
if item i of sonnom is in {".", " ", "-"} then
set i to arret
else
set sonnomjusquaupoint to sonnomjusquaupoint & item i of sonnom
set i to i + 1
end if
end repeat
set sonnom to sonnomjusquaupoint as string
set soussoussousDossier to sonnom
if not (exists folder soussoussousDossier of folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier n'existe pas
make new folder at folder soussousDossier of folder sousDossier of dossierchoisi with properties {name:soussoussousDossier} -- Crée le dossier
end if
set cheminSousSoussousDossier to ((dossierchoisi as string) & sousDossier & ":" & soussousDossier & ":" & soussoussousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cefichierweb to folder cheminSousSoussousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeCSS
-- Fonction qui s'occupe des fichiers html rangement par date ou par ordre alphabétique
-- /projet-HTML-CSS/f/fichier/fichier-bleu.app
on rangeHTML(cefichierweb, dossierchoisi)
tell application "Finder"
set projet to name of dossierchoisi
set projet to my tronqueLeNom(projet, 9)
set sousDossier to projet & "-HTML-CSS"
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set sonnom to name of cefichierweb as string
set leRangement to my quelRangement(sonnom) -- voir la fonction quelRangement(sonnom) qui évalue le nom du fichier
set typeRangement to item 1 of leRangement -- chronologique ou alphabetique
set nomRangement to item 2 of leRangement -- date sous forme de aaaammjj ou petit nom du fichier
-- rangement chronologique
-- /projet-HTML-CSS/2010/01-janvier/20100106fichier.html
if typeRangement = "chronologique" then
set anneefichier to items 1 thru 4 of nomRangement as string
set moisfichier to items 5 thru 6 of nomRangement as string
set jourfichier to items 7 thru 8 of nomRangement as string
set soussousDossier to anneefichier
if not (exists folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier n'existe pas
make new folder at folder sousDossier of dossierchoisi with properties {name:soussousDossier} -- Crée le dossier
end if
set moisModifTraductions to my traduit("mois" & moisfichier) -- Cherche les traductions disponibles
set moisModifChiffre to item 1 of moisModifTraductions -- Change le mois en chaîne de 2 chiffres
set moisModif3Lettres to item 2 of moisModifTraductions -- Change le mois en chaîne de 3 ou 4 lettres
set moisModifToutesLettres to item 3 of moisModifTraductions -- Change le mois par sa traduction en toutes lettres
set soussoussousDossier to moisfichier & "-" & moisModifToutesLettres
if not (exists folder soussoussousDossier of folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier n'existe pas
make new folder at folder soussousDossier of folder sousDossier of dossierchoisi with properties {name:soussoussousDossier} -- Crée le dossier
end if
set cheminSousSoussousDossier to ((dossierchoisi as string) & sousDossier & ":" & soussousDossier & ":" & soussoussousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cefichierweb to folder cheminSousSoussousDossier -- déplace le fichier dans le sous-dossier
end try
else -- rangement alphabétique
-- projet-HTML-CSS/f/fichier/fichier-exemple.html
set petitNomFichier to item 2 of leRangement
set soussousDossier to item 1 of petitNomFichier -- initiale du nom
if not (exists folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier n'existe pas
make new folder at folder sousDossier of dossierchoisi with properties {name:soussousDossier} -- Crée le dossier
end if
set soussoussousDossier to petitNomFichier
if not (exists folder soussoussousDossier of folder soussousDossier of folder sousDossier of dossierchoisi) then -- Si le dossier n'existe pas
make new folder at folder soussousDossier of folder sousDossier of dossierchoisi with properties {name:soussoussousDossier} -- Crée le dossier
end if
set cheminSousSoussousDossier to ((dossierchoisi as string) & sousDossier & ":" & soussousDossier & ":" & soussoussousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move cefichierweb to folder cheminSousSoussousDossier -- déplace le fichier dans le sous-dossier
end try
end if
end tell
end rangeHTML
-- Fonction qui s'occupe des autres types de fichiers rangement selon le type de fichier
-- /type de fichier/fichier-de-type-inhabituel
-- très utile pour connaître le type des fichiers
on rangeAutresFichiers(ceFichier, dossierchoisi)
tell application "Finder"
set typeDeFichier to kind of ceFichier
display dialog ("Mon type de fichier est:" & return & typeDeFichier)
-- Création du nom du sous dossier vous pouvez utiliser toutes les variables précédement définies
set sousDossier to (typeDeFichier)
if not (exists folder sousDossier of dossierchoisi) then -- Si un sous-dossier avec le type de fichier n'existe pas
make new folder at dossierchoisi with properties {name:sousDossier} -- Crée le dossier
end if
set cheminSousDossier to ((dossierchoisi as string) & sousDossier & ":") as alias -- Crée le chemin d'accès au sous dossier
try -- evite l'arrêt si le fichier existe déjà à destination
move ceFichier to folder cheminSousDossier -- déplace le fichier dans le sous-dossier
end try
end tell
end rangeAutresFichiers
-- Fonction qui permet de lancer le script à partir du fichier sélectionné dans le finder
on run
-- set dossierchoisi to selection of application "Finder" -- Range le dossier sélectionné dans le finder. Risque d'erreur mais fun
set dossierchoisi to choose folder with prompt "Quel dossier faut-il ranger ?" -- Plus prudent demande le nom du dossier à traiter
set elementschoisis to (selection of application "Finder")
set lesFichiers to ""
repeat with leFichier in elementschoisis -- Place les fichiers sélectionnés dans le finder dans lesFichiers
set lesFichiers to (lesFichiers & leFichier as string) & return
end repeat
display dialog (("Placer dans le dossier " & return & dossierchoisi as string) & return & return & " les fichiers suivants:" & return & lesFichiers) buttons {"non juste le dossier", "oui ces fichiers aussi"}
set laReponse to the result
if button returned of laReponse is "oui ces fichiers aussi" then
repeat with leFichier in elementschoisis
try -- evite l'arrêt si le fichier existe déjà à destination
move leFichier to dossierchoisi -- Déplace les fichiers dans le dossier
end try
end repeat
end if
triele(dossierchoisi)
end run
-- Fonction qui permet de lancer le script à partir du dépot des fichiers dans le dossier
on adding folder items to this_folder after receiving added_items
tell application "Finder"
set dossierchoisi to this_folder
end tell
-- display dialog (dossierchoisi as string) -- Chemin d'acces au répertoire
triele(dossierchoisi)
end adding folder items to
-- Fonction de droplet
on open (itemsajoutes)
activate
set nomDuDossier to nomduscript() -- Obtient le nom de la droplet pour en faire le nom de dossier
tell application "Finder"
set dossierpardefaut to folder "Desktop" of home -- Par défaut le dossier de rangement est sur le bureau. On pourrait le placer dans un autre dossier images, projet ....
if not (exists folder nomDuDossier of dossierpardefaut) then -- Si un sous-dossier avec le nom de l'application n'existe pas
make new folder at dossierpardefaut with properties {name:nomDuDossier} -- Crée le dossier
end if
repeat with leFichier in itemsajoutes
move leFichier to folder nomDuDossier -- Déplace les fichiers dans le sous-dossier
end repeat
set dossierchoisi to folder nomDuDossier -- Transforme le nom du dossier en chemin de répertoire
end tell
triele(dossierchoisi)
end open
-- Fonction qui donne le nom de cette droplet
on nomduscript()
tell application "Finder"
set the lesApp to name of every process whose file type is "APPL"
return last item of lesApp
end tell
end nomduscript
-- Fonction qui fait les traductions sous diverses formes
on traduit(chaineATraduire)
set dictionnaire to {{"January", {"01", "jan", "janvier"}}, {"February", {"02", "fev", "fevrier"}}, {"March", {"03", "mar", "mars"}}, {"April", {"04", "avr", "avril"}}, {"May", {"05", "mai", "mai"}}, {"June", {"06", "juin", "juin"}}}
set dictionnaire to dictionnaire & {{"mois01", {"01", "jan", "janvier"}}, {"mois02", {"02", "fev", "fevrier"}}, {"mois03", {"03", "mar", "mars"}}, {"mois04", {"04", "avr", "avril"}}, {"mois05", {"05", "mai", "mai"}}, {"mois06", {"06", "juin", "juin"}}}
set dictionnaire to dictionnaire & {{"July", {"07", "juil", "juillet"}}, {"August", {"08", "aout", "aout"}}, {"September", {"09", "sept", "septembre"}}, {"October", {"10", "oct", "octobre"}}, {"November", {"11", "nov", "novembre"}}, {"December", {"12", "dec", "decembre"}}}
set dictionnaire to dictionnaire & {{"mois07", {"07", "juil", "juillet"}}, {"mois08", {"08", "aout", "aout"}}, {"mois09", {"09", "sept", "septembre"}}, {"mois10", {"10", "oct", "octobre"}}, {"mois11", {"11", "nov", "novembre"}}, {"mois12", {"12", "dec", "decembre"}}}
set dictionnaire to dictionnaire & {{"Appl", {"Applications", "programmes", "logiciels"}}, {"Fichier texte brut", {"textes", "txt", "textbrut"}}, {"mot", {"def1", "def2", "def3"}}}
-- pour ajouter du vocabulaire ajoutez des séquences ---, {"mot", {"def1", "def2", "def3"}}--- avant la dernière parenthèse
set tailleDuDictionnaire to count of dictionnaire -- donne le nombre d'éléments du dictionnaire (le premier niveau des listes)
set renvoi to "---" -- pour savoir si on va trouver une réponse
repeat with i from 1 to tailleDuDictionnaire -- cherche dans le premier niveau des listes
if item 1 of item i of dictionnaire = chaineATraduire then return item 2 of item i of dictionnaire -- si le premier élément du premier niveau correspond renvoi le deuxième élémentqui est une liste de correspondances
end repeat
if renvoi = "---" then return chaineATraduire -- retourne l'original s'il n'y a pas d'équivalence
end traduit
-- Fonction qui change les jours en chaine de 2 chiffres
on changeJourEn2Chiffres(jourEnNombre)
if jourEnNombre < 10 then
return ("0" & jourEnNombre as string)
else
return (jourEnNombre as string)
end if
end changeJourEn2Chiffres
-- Fonction qui renvoit le début du nom
on tronqueLeNom(chaineATronquer, nombreDeCaracteres)
set AppleScript's text item delimiters to "" -- Réinitialise texte delimiter à sa valeur d'origine
set the lesLettresDuMot to every text item of chaineATronquer -- Cree la liste des lettres du mot
if (count of lesLettresDuMot) > nombreDeCaracteres then -- Si le nom est trop long
set nomTronque to items 1 through nombreDeCaracteres of chaineATronquer as string -- Extrait le début du nom
else
set nomTronque to chaineATronquer as string -- Garde le nom complet
end if
return nomTronque
end tronqueLeNom
-- Fonction qui enlève les caractères inutiles d'un nom
on nettoieLeNom(nomInitial, enleveCa, remplaceParCa)
if enleveCa is in nomInitial then -- Si la chaine contient les caractères inutiles
set AppleScript's text item delimiters to the enleveCa -- Définit les lettres à remplacer
set the listeDesMots to every text item of nomInitial -- Cree la liste de tous les mots séparés par enleveCa
set AppleScript's text item delimiters to remplaceParCa -- Definit les lettres de remplacement
set the nouveauNom to listeDesMots as string -- Definit le nouveau nom
set AppleScript's text item delimiters to "" -- Réinitialise texte delimiter à sa valeur d'origine
return nouveauNom
else
return nomInitial
end if
end nettoieLeNom
-- Fonction qui change le nom de fichier
on Renome(aliasDuFichier, new_item_name)
tell application "Finder"
--activate
set the parent_container_path to (the container of aliasDuFichier) as text
if not (exists item (the parent_container_path & new_item_name)) then
try
set the name of aliasDuFichier to new_item_name
on error the error_message number the error_number
if the error_number is -59 then
set the error_message to "Ce nom de fichier contient des caractères interdits, par exemple (:)."
else --the suggested name is too long
set the error_message to error_message -- "The name is more than 31 characters long." Avec mac osX les noms trop long font plus de 31 caractères. Cela peut poser un problème lors de transferts de fichiers.
end if
--beep
tell me to display dialog the error_message default answer new_item_name buttons {"Cancel", "Skip", "OK"} default button 3
copy the result as list to {new_item_name, button_pressed}
if the button_pressed is "Skip" then return 0
my Renome(aliasDuFichier, new_item_name)
end try
else --the name already exists
--beep
tell me to display dialog "Ce nom existe déjà, donnez un autre nom au fichier." default answer new_item_name buttons {"Cancel", "Skip", "OK"} default button 3
copy the result as list to {new_item_name, button_pressed}
if the button_pressed is "Skip" then return 0
my srenome(aliasDuFichier, new_item_name)
end if
end tell
end Renome
-- fonction qui renvoit deux chaines l'une pour le type de classement et l'autre l'élément intéressant pour le classement
on quelRangement(sonnom)
set extraitnombre to 99999999
-- recherche 8 chiffres qui peuvent signifier une date sous la forme aaaammjj
repeat with compteur from 1 to (count sonnom) - 7
set extrait to items compteur thru (compteur + 7) of sonnom as string
try
set premiernombre to item 1 of extrait
if premiernombre is in {" ", "+", "-"} then
-- ne rien faire
else
set extraitnombre to extrait as number
return {"chronologique", extrait}
exit repeat
end if
end try
end repeat
-- recherche le premier mot si le nom ne contient pas de date
if extraitnombre = 99999999 then
repeat with compteur from 1 to (count sonnom)
if (item compteur of sonnom) is in {".", " ", "-"} then
return {"alphabetique", (items 1 thru (compteur - 1) of sonnom) as string}
exit repeat
end if
end repeat
end if
end quelRangement
Orig: 2009/12 Rev: 2010/01/10
rangement-projet.html
Design et gestion du site B.Gadrat