# Automatiser le déplacement de fichier avec des variables



## Pat_picto (18 Novembre 2020)

Bonjour à tous et merci d'avance à tous les développeurs susceptibles de m'aider. J'ai un lourd travail de classement à faire sur 20000 fichiers et j'aimerais automatiser la tâche mais je n'y connais rien en dév. 

Mes fichiers sont classés dans un dossier nommé CMJN et sont nommés toujours de la même façon avec 3 variables : "Nom"_picto_full_"couleur"."ext"
Je dois les classer dans des dossiers dont les noms reprennent 2 variables :
Chemin : Dossier "Nom" > Dossier Fond > Dossier CMJN > Dossier "ext"

exemple 1 : nom d'un fichier : Changez d'appartement_picto_full_Vert.png
Variable 1  : Changer d'appartement
Variable 2 : png
Je dois classer ce fichier dans le dossier suivant :
Dossier "Changez d'appartement" > Dossier Fond > Dossier CMJN > Dossier "png"

exemple 2 : nom du fichier : Courrier_picto_full_Bleu.eps
Variable 1  : Courrier
Variable 2 : eps
Je dois classer ce fichier dans le dossier suivant :
Dossier "Courrier"> Dossier Fond > Dossier CMJN > Dossier "eps"

Voilà je m'apprêtais à faire tout çà à la main et j'ai pensé à automator, AppleScript mais je ne sais pas faire et sinon c'est 60 h de classement…


----------



## zeltron54 (18 Novembre 2020)

Bonjour,

Pour essayer de te faire un script, il faudrait quelques infos supplémentaires.

Ou se trouve le dossier original avec les 20000 fichiers ?
Y a t'il des sous dossiers dans ce dossier original ?
Les dossiers devant recevoir les fichiers sont 'ils déjà créés ? si oui : où (quel est le chemin) si non: faut'il les créer et où (quel chemin) ?

Avec ces premiers éléments on devrait pouvoir envisager un script.


----------



## edenpulse (18 Novembre 2020)

Tu cherches cet utilitaire : https://www.noodlesoft.com
Il pourra te trier tout ça comme tu veux tout seul en fonction des paramètres que tu lui donnes. Vraiment ultra flexible.


----------



## Pat_picto (18 Novembre 2020)

Déjà merci de me répondre si vite. Je te mets ci-dessous 2 copies d'écran pour te montrer
1/ le dossier d'origine du fichier 
2/ le dossier de destination

Voici les réponses à tes questions :
• les 20000 fichiers sont répartis dans différents dossiers. En fait il s'agit d'une série de pictos déclinés
. sous 5 formes "Seul", "Fond", "Fond avec nom",  "Encadre",  "Encadre avec nom"
. sous 3 couleurs Bleu, Vert, Lilas
. sous 3 systèmes colorimétriques Blanc, CMJN, RVB
. sous 3 formats eps, png, jpg

• Les pictos ont été réunis dans 2 fichiers illustrator (Full et Simple) et  ont été exportés tous en même temps (107 pictos Full et 31 pictos simple) dans des dossiers correspondants aux formes répertoriées ci-dessus. Il y a donc 3 sous dossiers avec environ 1000 fichiers par dossier. Exemple : 
Full > @Fond > CMJN > Animation_picto_full_Bleu.eps , Animation_picto_full_Lilas.eps, Animation_picto_full_Vert.eps + 997 fichiers
Full > @Fond > Pantone > Animation_picto_full_Bleu.eps , Animation_picto_full_Lilas.eps, Animation_picto_full_Vert.eps…+ 997 fichiers
Full > @Fond > RVB > Animation_picto_full_Bleu.eps , Animation_picto_full_Lilas.eps, Animation_picto_full_Vert.eps…+ 997 fichiers

• Les dossiers de destination sont déjà créés. Il y en a 1 par picto donc 107 full et 31 simples. Voici un exemple de structure pour le picto Animation 
Animation > Full > Fond > CMJN > eps
Animation > Full > Fond > CMJN > jpg
Animation > Full > Fond > CMJN > png

Animation > Full > Fond > Pantone > eps
Animation > Full > Fond > Pantone > jpg
Animation > Full > Fond > Pantone > png

Animation > Full > Fond > RVB > eps
Animation > Full > Fond > RVB > jpg
Animation > Full > Fond > RVB > png

On retrouve ces 9 dossiers pour Seul, Fond avec nom, Encadre, Encadre avec nom.

ci-joint les fichiers. Je me doute que c'est assez complexe comme tri. Dis moi si tu peux quelque chose pour moi. merci


----------



## Pat_picto (18 Novembre 2020)

edenpulse a dit:


> Tu cherches cet utilitaire : https://www.noodlesoft.com
> Il pourra te trier tout ça comme tu veux tout seul en fonction des paramètres que tu lui donnes. Vraiment ultra flexible.


ok la difficulté est de créer des noms de dossier de destination avec 2 variables qui sont dans le nom des fichiers à classer (le début du nom et l'extension). Je vais aller voir. Merci !


----------



## zeltron54 (18 Novembre 2020)

J'ai beaucoup de mal à comprendre !

-Tous les fichiers à déplacer sont donc dans le dossier "export" et tous ses sous dossiers ?
- La destination est également dans "export" et certain sous dossiers ?

Si c'est cela je ne pourrai pas faire un script qui réalise en une seule fois (le script reverrait les fichiers après leur déplacement !)

Les dossiers de destinations devraient être en dehors du dossier d'origine. Quitte à les déplacer après le tri...


----------



## zeltron54 (18 Novembre 2020)

Je te met un script pour test. A tester sur un petit dossier.

Il faut que tu crées un dossier vide avec le nom "destination" sur le bureau.

A son lancement le script te demande de choisir un dossier à trier.
Il passe tous les fichiers du dossier et de ses sous dossiers en revue et les(déplace) dans un dossier qu'il crée si besoin dans destination avec le nom qui sera :
("nom de la première partie du fichier"_"full"_"fond"_"extension du fichier").
Pour le test et afin de ne pas mettre le souk il ne déplace pas les fichiers mais les duplique...

Dis moi si c'est bien ce que tu attends ou ce qu'il faut changer.

EDIT: En relisant je me rend compte qu'il y a des sous dossiers (CMJN, Pantone, RVb) mais je ne vois pas d'après quels critères  on utilise ses sous dossiers ?


```
tell application "Finder"
   
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à trier"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        set les_fichiers to files of un_dossier
       
        repeat with chaque_fichier in les_fichiers
           
            set nom to name of chaque_fichier --récupère le nom du fichier
            set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
            set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
            set lextension to name extension of chaque_fichier -- ou (document file nom in cible)
            set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
            set x to characters 1 thru ((offset of "_" in nom) - 1) of nom as string
           
            set chemin to (path to desktop folder) & "destination:" as string
            set dossierdest to chemin & x & "_full_fond_" & lextension
           
            if not (exists dossierdest) then
                make new folder at chemin with properties {name:x & "_full_fond_" & lextension}
            end if
            duplicate chaque_fichier to dossierdest
            --move chaque_fichier to dossierdest
        end repeat
       
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            my inspecter(chaque_dossier)
        end repeat
       
    end tell
end inspecter

tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Je te met un script pour test. A tester sur un petit dossier.
> 
> Il faut que tu crées un dossier vide avec le nom "destination" sur le bureau.
> 
> ...


Oui c'est bien çà le problème c'est le rangement dans le dossier de destination qui a 4 sous-dossiers qui sont déjà créés. Je propose de simplifier en ne gardant que 2 variables ensuite j'adapterai le script.
J'ai donc 1 dossier d'origine "CMJN" avec tous les pictos à classer dans des dossiers existants au nom de chaque picto avec 4 sous dossiers : 

Dossier : nom du picto
Sous-dossier 1 : Full
Sous-dossier 2 : Fond
Sous-dossier 3 : CMJN
Sous-dossier 4.1 : eps  Sous-dossier 4.2 : jpg Sous-dossier 4.3 : png

exemple : Animation > Full > Fond > CMJN > eps
Animation : variable 1 = nom du picto (c'est le début du nom du fichier d'origine avant le symbole _)
eps : variable 2 = extension du fichier d'origine
Full,  Fond et CMJN restent invariables 

exemple 1 : le fichier animation_picto_full_Bleu.eps se classe dans : 
dossier animation > Full > Fond > CMJN > eps

exemple 2 : le fichier animation_picto_full_Bleu.jpg  se classe dans : 
le dossier animation > Full > Fond > CMJN > jpg

exemple 3 :  le fichier Bibliothèque partagée_picto_full_Vert.png  se classe dans :
le dossier bibliothèque partagée > Full > Fond > CMJN > png

Avec un script je pourrai classer environ 1000 dossiers à la fois et j'adapterai à chaque fois le script pour les dossiers suivants (changement de Full, Fond, CMJN)

Je sais que je ne suis pas très clair mais j'espère avoir un peu simplifié.


----------



## zeltron54 (19 Novembre 2020)

Dur, dur   à comprendre...
Je récapitule ce que je crois avoir compris.

Un fichier dont le nom est :   lenom_full_vert.eps
sera classé dans :    lenom > full > fond > nom du dossier dont il est issu > eps

Il y a donc 3 variables:

lenom (à récupérer dans le nom du fichier)
le nom du dossier dont il est issu  (CMJN ou Pantone ou RVB)
l'extension (à récupérer dans le nom du fichier)

Je ne suis pas sur pour le dossier  ( CMJN, ou Pantone ou RVB)
Peux tu confirmer ou préciser

Ou tu préfères que l'on traite chaque dossiers (CMJN, Pantone, RVB) séparément ?...


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Dur, dur   à comprendre...
> Je récapitule ce que je crois avoir compris.
> 
> Un fichier dont le nom est :   lenom_full_vert.eps
> ...





zeltron54 a dit:


> Dur, dur   à comprendre...
> Je récapitule ce que je crois avoir compris.
> 
> Un fichier dont le nom est :   lenom_full_vert.eps
> ...


oui c'est exactement çà sauf que 
- j'ai oublié le mot "picto" qui revient toujours au même endroit dans le nom des fichiers :
le nom exact c'est :  lenom_picto_full_couleur.eps
- la couleur varie (vert, lilas, bleu) mais ne joue pas pour le classement car les 3 couleurs sont classés ensemble. 

Par exemple ces 3 fichiers issus du dossier CMJN vont dans le dossier animation > full > fond > CMJN > eps
animation_picto_full_Bleu.eps 
animation_picto_full_Vert.eps 
animation_picto_full_Lilas.eps

Et pour les variables je propose effectivement d'éliminer le nom du dossier dont il est issu pour simplifier. Et de traiter séparément CMJN, Pantone, RVB. Tu peux faire le 1er script en considérant que le dossier d'origine est CMJN.


----------



## zeltron54 (19 Novembre 2020)

Voilà un script pour tester.

Il te faut créer sur le bureau un dossier "destination" VIDE.

Le script demande de choisir le dossier à trier (dossier CMJN), puis il duplique (provisoirement pour tester, en définitif déplacera) tous les fichiers du dossier  et de ses sous dossiers , en créant si nécessaire la structure de dossiers dans destination.

Fais un test ! on adaptera ensuite en fonction du résultat obtenu.


```
tell application "Finder"
    
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à trier"
    my inspecter(chemin)
end tell

on inspecter(un_dossier)
    tell application "Finder"
        
        set dossource to "CMJN" -- Nom du dossier source à changer
        
        set les_fichiers to files of un_dossier
        
        repeat with chaque_fichier in les_fichiers
            
            set nom to name of chaque_fichier --récupère le nom du fichier
            set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
            set AppleScript's text item delimiters to {"."} --récupère la partie avant le dernier "."
            set lextension to name extension of chaque_fichier -- ou (document file nom in cible)
            set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
            
            set x to characters 1 thru ((offset of "_" in nom) - 1) of nom as string
            
            set chemin to (path to desktop folder) & "destination:" as string
            set dossierdest to chemin & x
            
            set chemin to (path to desktop folder) & "destination:" as string
            set chemindosdest to chemin & x & ":" & "full:fond:" & dossource & ":" & lextension
            
            if not (exists dossierdest) then
                make new folder at chemin with properties {name:x}
                make new folder at chemin & x with properties {name:"full"}
                make new folder at chemin & x & ":" & "full" with properties {name:"fond"}
                make new folder at chemin & x & ":" & "full" & ":" & "fond" with properties {name:dossource}
                make new folder at chemin & x & ":" & "full" & ":" & "fond" & ":" & dossource & ":" with properties {name:"eps"}
                make new folder at chemin & x & ":" & "full" & ":" & "fond" & ":" & dossource & ":" with properties {name:"jpg"}
                make new folder at chemin & x & ":" & "full" & ":" & "fond" & ":" & dossource & ":" with properties {name:"png"}
            end if
            
            set aa to chaque_fichier as string
            
            duplicate chaque_fichier to chemindosdest
            --move chaque_fichier to dossierdest
        end repeat
        
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            my inspecter(chaque_dossier)
        end repeat
        
    end tell
end inspecter

tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Voilà un script pour tester.
> 
> Il te faut créer sur le bureau un dossier "destination" VIDE.
> 
> ...


merci beaucoup mais j'ai une question avant de me lancer. Quel est le process pour appliquer un script sur les dossiers concernés ? Désolée mais je suis toujours aussi débutante.


----------



## zeltron54 (19 Novembre 2020)

Tu crées ton dossier destination sur le bureau (dossier vide)

Tu ouvres le logiciel "Editeur de script" qui est dans application--> Utilitaires.
Tu choisis nouveau document (en bas à gauche)
Tu fais un copié du script et un collé dans la fenêtre du logiciel.
Tu cliques sur le bouton exécuter

Le script te demande de choisir le dossier à trier, tu choisis ton dossier CMJN à trier  et tu cliques sur le bouton "choisir" en bas à droite.
Tu patientes jusqu' a  l'apparition d'une fenêtre te disant que c'est fait

C'est tout

La version actuelle du script duplique les fichiers au lieu de les déplacer, pour éviter de mettre le souk tant que l'on est pas sur du résultat obtenu.
Quand on sera satisfait du résultat on pourra modifier pour déplacer les fichiers.


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Tu crées ton dossier destination sur le bureau (dossier vide)
> 
> Tu ouvres le logiciel "Editeur de script" qui est dans application--> Utilitaires.
> Tu choisis nouveau document (en bas à gauche)
> ...


çà marche nickel, vraiment bravo. Donc en 2 minutes j'ai pu trier 775 fichiers.

Mais je crois qu'il y a un problème pour la suite. 

Mon dossier suivant s'appelle RVB (au lieu de CMJN). Et il faut impérativement que les fichiers du dossier RVB viennent se ranger dans les dossiers qui viennent d'être créés. Donc pas de nouveaux dossiers. Sauf qu'au lieu du dossier destination CMJN avec les 3 sous dossiers eps, jpg, png, on aura un dossier RVB avec les sous dossiers eps, jpg, png

exemple de DESTINATION pour les fichiers animation
animation > Full > fond > RVB  > eps ou jpg ou png

Autrement dit c'est tout pareil mais les prochains scripts ne doivent pas créer de nouveaux dossiers. Tu crois que c'est possible ?


----------



## zeltron54 (19 Novembre 2020)

Bon si c'est le résultat que tu voulais pour le dossier CMJN.
Est ce que le fait de les avoir dupliqué te convient ou tu veux les déplacer ?

Pour les autres dossiers (RVB ou Pantome) je t'expliquerais comment faire.

Edit: Les fichiers du dossier a trier RVB doivent donc être place dans le dossier que l'on vient de créer donc le chemin:
Destination --> lenom --> full --> fond --> RVB --> 1 des 3 dossiers lpg,eps, png
Est-ce bien çà ?
Et il y aura au total que 3 dossiers à trier (CMJN, Pantone, RVB) ou il y en aura d'autre ?


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Bon si c'est le résultat que tu voulais pour le dossier CMJN.
> Est ce que le fait de les avoir dupliqué te convient ou tu veux les déplacer ?
> 
> Pour les autres dossiers (RVB ou Pantome) je t'expliquerais comment faire.


oui vraiment parfait pour le dossier CMJN. 
Je préfére qu'ils soient déplacés si c'est possible.


----------



## zeltron54 (19 Novembre 2020)

ok pour déplacer.
j'ai éditer ma demande ci-dessus, j'attends tes réponses pour modifier le script.


----------



## Pat_picto (19 Novembre 2020)

Pat_picto a dit:


> oui vraiment parfait pour le dossier CMJN.
> Je préfére qu'ils soient déplacés si c'est possible.


ok je n'avais pas lu jusqu'au bout !

Edit: Les fichiers du dossier a trier RVB doivent donc être place dans le dossier que l'on vient de créer donc le chemin:
Destination --> lenom --> full --> fond --> RVB --> 1 des 3 dossiers jpg,eps, png
Est-ce bien çà ? >> OUI
Et il y aura au total que 3 dossiers à trier (CMJN, Pantone, RVB) ou il y en aura d'autre ? >> OUI il y en a d'autres

Je vais avoir toujours les mêmes 3 dossiers à trier CMJN, Pantone, RVB  mais j'ai 8 configurations de destinations (d'où le nombre phénoménal de fichiers) :

Destination --> lenom --> Full --> Fond --> CMJN --> 1 des 3 dossiers jpg,eps, png
Destination --> lenom --> Full --> Fond avec nom --> CMJN --> 1 des 3 dossiers jpg,eps, png
Destination --> lenom --> Full --> Encadre --> CMJN --> 1 des 3 dossiers jpg,eps, png
Destination --> lenom --> Full --> Encadre avec nom --> CMJN --> 1 des 3 dossiers jpg,eps, png

Destination --> lenom --> Simple --> Fond --> CMJN --> 1 des 3 dossiers jpg,eps, png
Destination --> lenom --> Simple --> Fond avec nom --> CMJN --> 1 des 3 dossiers jpg,eps, png
Destination --> lenom --> Simple --> Encadre --> CMJN --> 1 des 3 dossiers jpg,eps, png
Destination --> lenom --> Simple --> Encadre avec nom --> CMJN --> 1 des 3 dossiers jpg,eps, png


----------



## zeltron54 (19 Novembre 2020)

J'ai encore des problème de compréhension !   

Tu viens de trier un dossier CMJN et là tu me dis qu'il y en aura 7 autres qui s' appellerons CMJN ?
j'avais cru comprendre que les dossiers full et fond ne changerai pas et là tu me mets d'autres noms !

Il y aura donc 3 fois les 8 configurations ci-dessus (CMJN, RVB, Pantone) ?

Tu as donc 24 dossiers à trier en tout ?

Ai-je compris ?


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> J'ai encore des problème de compréhension !
> 
> Tu viens de trier un dossier CMJN et là tu me dis qu'il y en aura 7 autres qui s' appellerons CMJN ?
> j'avais cru comprendre que les dossiers full et fond ne changerai pas et là tu me mets d'autres noms !
> ...


oui c'est çà sauf que j'ai oublié le Blanc (oups) qui se rajoute à la série CMJN, RVB, Pantone.
çà fait donc 32 configurations de dossiers de destination. Et j'ai environ 40 dossiers d'origine à trier. 
Si tu veux jeter l'éponge je comprendrai. Je ne pensais pas m'embarquer dans une telle galère.…


----------



## zeltron54 (19 Novembre 2020)

Le problème c'est de bien comprendre pour pouvoir écrire le script.

Tu dis "blanc" il s'agit bien d'un mode, pas d'une couleur écrite dans le nom ?

De nouveau une incohérence pour moi. 40 dossiers alors qu'il n'y a que 32 possibilités ? ?


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Le problème c'est de bien comprendre pour pouvoir écrire le script.
> 
> Tu dis "blanc" il s'agit bien d'un mode, pas d'une couleur écrite dans le nom ?
> 
> De nouveau une incohérence pour moi. 40 dossiers alors qu'il n'y a que 32 possibilités ? ?



J'ai un nombre différent de dossiers d'origine et de destination car le classement est différent.
Mais si tu peux me faire un script qui me permet d'ajouter aux dossiers créés tout à l'heure de nouveaux fichiers alors je pourrai le dupliquer en changeant les variables, non ? trop complexe ?

Sinon voici le problème complet : 

J'ai 107 pictos "Full" et 31 pictos "Simple". 
Je dois créer des dossiers au nom de chacun de ces 138 pictos enregistrés dans différents formats qui seront classés comme suit :

5 sous-dossiers niveau 1 : Fond, Fond avec nom, Encadré, Encadré avec nom, Seul
4 sous-dossiers niveau 2 : Blanc, CMJN, Pantone, RVB
3 sous dossiers eps, jpg, png.

Pour constituer ces dossiers par pictos mes fichiers d'origine sont les suivants :
Pour les 107 pictos Full

5 sous dossiers niveau 1 : Seul, Fond, Fond avec nom, Encadre, Encadre avec nom
4 sous dossiers niveau 2 : Blanc, CMJN, Pantone, RVB
Niveau 3 il y a tous les fichiers des pictos full.

Pour les 31 pictos Simple :
idem


----------



## zeltron54 (19 Novembre 2020)

Pour être sur , qu'appelles tu pictos ? (un dossier)?


----------



## zeltron54 (19 Novembre 2020)

Si je regarde de plus prés, tes structures d'origine et de fin sont les mêmes:

5 sous dossiers niveau 1 : Seul, Fond, Fond avec nom, Encadre, Encadre avec nom
4 sous dossiers niveau 2 : Blanc, CMJN, Pantone, RVB

Donc d'origine tous le fichiers sont dans les dossiers de niveau 2 (Blanc, CMJN, Pantone, RVB)
Et tu veux au final déplacer tous ces fichiers dans leur dossier d'origine en ajoutant un niveau à l'aide de 3 nouveaux dossiers (eps, jpg, png) et répartir les fichiers dedans.

Si c'est bien çà, alors il faut refaire le  script...


----------



## Pat_picto (19 Novembre 2020)

zeltron54 a dit:


> Si je regarde de plus prés, tes structures d'origine et de fin sont les mêmes:
> 
> 5 sous dossiers niveau 1 : Seul, Fond, Fond avec nom, Encadre, Encadre avec nom
> 4 sous dossiers niveau 2 : Blanc, CMJN, Pantone, RVB
> ...


Les pictos sont les fichiers d'origine représentant chacun un symbole comme des clés, du linge, un incendie… Ce sont ces symboles que je dois décliner dans des 4 couleurs et avec ou sans fond, avec ou sans encadré et ensuite enregistrer dans tous les formats dont on a parlé.

Les classements origine et destination sont très différents puisque à l'origine tous les pictos sont réunis ensemble dans les dossiers CMJN, Pantone, RVB, Blanc. Et en destination chaque dossier correspond à 1 picto avec tous ses formats.

ci joint 2 copies d'écran, dis moi si cà te parle plus.


----------



## zeltron54 (19 Novembre 2020)

Je regarde dès que j'ai un peu de temps.

Je pense qu'au départ , lors du choix de ton dossier à trier, te demander de choisir le nom des dossiers de la structure a obtenir pour ce dossier, afin de déplacer les fichiers dans les dossiers avec les noms correspondant au dossier choisi.

Je continuerai de dupliquer les fichiers afin qu'en cas d'erreur il n'y ai pas le souk dans tes origines.


----------



## zeltron54 (19 Novembre 2020)

Une nouvelle version pour test.
le dossier destination doit toujours être sur le bureau

Le script te demande de choisir le dossier à trier
puis de choisir le nom du dossier 2
puis le nom du dossier 3
puis le nom du dossier 4

Ces noms étant fonction du dossier que tu choisis de trier
Le nom du dossier 1 étant le nom du pictos il sera mis automatiquement.

Tu peux ensuite essayer avec un 2ieme dossier, Il devrait venir mettre les fichiers dans les dossiers existant ou en créer si nécessaire.

le script duplique les fichiers contenus dans le dossier choisi, mais pas ses sous dossier.
S'il existe des sous dossiers tu me le dira, je modifierai pour les prendre en compte.
Si les test sont concluant en fera la modification pour déplacer au lieu de dupliquer.


```
tell application "Finder"
   
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à trier"
   
    repeat
        set nameList to {"Full", "Simple"}
        set choix to (choose from list the nameList with prompt "Sélectionner le nom du dossier 2 : " with title "Choix") as string
        if choix is "false" then quit --exit repeat -- Bouton Annuler
        if choix is "Full" then
            set dossier2 to "Full"
            exit repeat
        else if choix is "Simple" then
            set dossier2 to "Simple"
            exit repeat
        end if
    end repeat
   
    repeat
        set nameList to {"Fond", "Fond avec nom", "Encadré", "Encadré avec nom", "Seul"}
        set choix to (choose from list the nameList with prompt "Sélectionner le nom du dossier 3 : " with title "Choix") as string
        if choix is "false" then quit --exit repeat -- Bouton Annuler
        if choix is "Fond" then
            set dossier3 to "Fond"
            exit repeat
        else if choix is "Fond avec nom" then
            set dossier3 to "Fond avec nom"
            exit repeat
        else if choix is "Encadré" then
            set dossier3 to "Encadré"
            exit repeat
        else if choix is "Encadré avec nom" then
            set dossier3 to "Encadré avec nom"
            exit repeat
        else if choix is "Seul" then
            display dialog "Seul"
        end if
    end repeat
   
    repeat
        set nameList to {"CMNJ", "RVB", "Pantone", "Blanc"}
        set choix to (choose from list the nameList with prompt "Sélectionner le nom du dossier 4 : " with title "Choix") as string
        if choix is "false" then quit --exit repeat -- Bouton Annuler
        if choix is "CMNJ" then
            set dossier4 to "CMJN"
            exit repeat
        else if choix is "RVB" then
            set dossier4 to "RVB"
            exit repeat
        else if choix is "Pantone" then
            set dossier4 to "Pantone"
            exit repeat
        else if choix is "Blanc" then
            set dossier4 to "Blanc"
            exit repeat
        end if
    end repeat
   
   
    set les_fichiers to files of chemin
   
    repeat with chaque_fichier in les_fichiers
       
        set nom to name of chaque_fichier --récupère le nom du fichier
        set sauv to AppleScript's text item delimiters --sauvegarder la variable delimiteur
        set AppleScript's text item delimiters to {"."}
        set lextension to name extension of chaque_fichier -- récupère l'entension
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
       
        set x to characters 1 thru ((offset of "_" in nom) - 1) of nom as string
       
        set chemin to (path to desktop folder) & "destination:" as string
       
        set chemindosdest to chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" & lextension
        set dossierdest to chemin & x
       
        if not (exists dossierdest) then
            make new folder at chemin with properties {name:x}
            make new folder at chemin & x with properties {name:dossier2}
            make new folder at chemin & x & ":" & dossier2 with properties {name:dossier3}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 with properties {name:dossier4}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"eps"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"jpg"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"png"}
        else if not (exists (chemin & x & ":" & dossier2)) then
            make new folder at chemin & x with properties {name:dossier2}
            make new folder at chemin & x & ":" & dossier2 with properties {name:dossier3}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 with properties {name:dossier4}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"eps"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"jpg"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"png"}
        else if not (exists (chemin & x & ":" & dossier2 & ":" & dossier3)) then
            make new folder at chemin & x & ":" & dossier2 with properties {name:dossier3}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 with properties {name:dossier4}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"eps"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"jpg"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"png"}
        else if not (exists (chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4)) then
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 with properties {name:dossier4}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"eps"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"jpg"}
            make new folder at chemin & x & ":" & dossier2 & ":" & dossier3 & ":" & dossier4 & ":" with properties {name:"png"}
        end if
       
        set aa to chaque_fichier as string
       
        duplicate chaque_fichier to chemindosdest
        --move chaque_fichier to dossierdest
    end repeat
   
   
end tell


tell application "Finder"
    (display dialog ("waouou ... Ca y est c'est fait !") buttons {"Salut !"})
end tell
```


----------

