Automatiser le déplacement de fichier avec des variables

zeltron54

Membre d’élite
29 Mars 2008
1 913
283
Lorraine
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

Membre junior
18 Novembre 2020
12
0
60
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

Membre d’élite
29 Mars 2008
1 913
283
Lorraine
Pour être sur , qu'appelles tu pictos ? (un dossier)?
 

zeltron54

Membre d’élite
29 Mars 2008
1 913
283
Lorraine
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

Membre junior
18 Novembre 2020
12
0
60
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...
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.
 

Fichiers joints

  • destination_.png
    destination_.png
    152,3 KB · Affichages: 10
  • Origine_.png
    Origine_.png
    134,2 KB · Affichages: 9

zeltron54

Membre d’élite
29 Mars 2008
1 913
283
Lorraine
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

Membre d’élite
29 Mars 2008
1 913
283
Lorraine
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.

Bloc de code:
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