Déplacements automatisés de fichiers dans dossiers séparés

koan_sabian

Nouveau membre
27 Novembre 2020
2
0
36
Bonjour,
via un BD j'exporte une liste d'élèves pour chacun de nos professeurs. Le fichier s'appelle "Prénom" "Nom".pdf (exemple : Marcel Test.pdf)
Je souhaiterais faire un script qui m'automatise le déplacement de ces fichiers dans des dossiers spécifiques (en reprenant le titre du fichier comme chemin)


Exemple :

Marcel Test.pdf --> /prof/Marcel Test/Marcel test.pdf
Jean Essai.pdf --> /prof/Jean Essai/Jean Essai.pdf

Est-ce que quelqu'un peut m'éclairer?

Merci d'avance
 

zeltron54

Membre d’élite
29 Mars 2008
1 966
298
Lorraine
Bonsoir,
Si j'ai bien compris le but est de mettre chaque fichier dans un dossier ayant le nom du fichier...
Tous tes fichiers étant dans un dossier, lances ce script, Il te demande de choisir le dossier à traiter et il te prévient lorsqu'il a terminé.

Bloc de code:
set the_folder to quoted form of POSIX path of (choose folder)

do shell script "cd " & the_folder & "
for each in *; do
    if  [ -f \"$each\" ]; then
        nom=${each%.*};
        while [ -e \"$nom\" ]; do
             nom=\"$nom\"_
         done
        /bin/mkdir -p \"$nom\" && /bin/mv -f \"$each\" \"$nom\"
    fi
done"
activate
display alert "Création d'un dossier pour chaque fichier.
Déplacement du fichier dans le dossier créé : Terminé."
 

koan_sabian

Nouveau membre
27 Novembre 2020
2
0
36
Trop cool merci énormément.
mes dossiers de destinations existent déjà ( donc juste un déplacement. Pas besoin de créer un dossier).
c est aussi ok avec ce script?

merci encore
 

zeltron54

Membre d’élite
29 Mars 2008
1 966
298
Lorraine
Non , si le dossier existe déjà, il va en créer un nouveau !

Donc il faut réécrire le script avec un test d'existence du dossier avant transfert et création du dossier s'il n'existe pas.

Je regarde ça demain....

Une question: les fichiers à déplacer sont bien dans le même dossier que les dossiers devant les recevoir ?
 
Dernière édition:

zeltron54

Membre d’élite
29 Mars 2008
1 966
298
Lorraine
Voilà un script, qui te demande de choisir le dossier à traiter.
Il déplace tous les fichiers de ce dossier dans le dossier de même nom, qui se trouve dans ce même dossier.
Si le dossier de même nom n'existe pas , il en crée un.
Dis moi si cela te convient ?
Bloc de code:
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les fichiers à trier"
end tell

tell application "Finder"
    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 {"."} --récupère la partie avant le dernier "."
        set elements to text items of nom
        set nomcourt to (items 1 thru -2 of elements) as string
        set AppleScript's text item delimiters to sauv --restaurer la variable delimiteur
        
        set chemin to chemin as string
        set ledossier to chemin & nomcourt & ":"
        
        if exists folder ledossier then
            move chaque_fichier to ledossier
        else
            make new folder at chemin with properties {name:nomcourt}
            move chaque_fichier to ledossier
        end if
        
    end repeat
end tell

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