Renommer des dossiers, créer des dossiers et déplacer des fichiers -> applescript

Mattdu62

Membre confirmé
19 Décembre 2022
26
0
42
Bonjour,
Je reçois des dossiers natifs de livre dont l'arborescence est comme ci-joint :
Les fichiers clients sont sur un serveur "macintosh HD:Exploitation:COUV NATIF"

Capture d’écran 2022-12-14 à 14.36.45.png

J'aimerai avoir au final avec le script une modification comme ci-joint
Capture d’écran 2022-12-19 à 15.14.00.png
Renommer automatiquement les dossiers dans "COUV NATIF"
pour ajouter les "-" entre les chiffres
Qu'une boite de dialogue me demande le dernier chiffre à ajouter à l'ISBN
renommer les noms (j'ai trouvé un script pour ça -> mais ça s'applique aussi au dossier parent)
Supprimer le _CV à la fin
Copier le nom obtenu
Créer 3 dossiers vierges et les nommer avec le nouveau nom obtenu et _fl1, _fl2 et _fl3 à la fin...
Mettre le contenu dans le _fl1 et _fl2
Ajouter le fichier pdf "Datamatrix_000.pdf" qui se trouve dans
"Macintosh HD:Utilisateurs:Societe:Travaux en cours:NOUVEAUTES:GABARITS:DATAMATRIX:DATAMATRIX_000.pdf"



J'ai repris le script de renomage : https://forums.macg.co/threads/recherche-de-caracteres-speciaux-a-la-volee.1365583/page-5
Le fichier parent est aussi impacté
mais je ne sais pas encore comment ajouter des "-" entre les chiffre que je veux...

J'arrive à créer des dossiers vierges dans un dossier déjà existant demandé par le script...
mais il faut qu'il s'applique aux sous-dossiers et pas à la racine...
j'utilise une boite de dialogue pour mes recherches mais tout sera automatisé puisque j'utilise des dossiers dédiés à ce travail
tell application "Finder"
set lechemin to choose folder with prompt "Sélectionnez le Dossier principal à traiter ?"
make new folder at lechemin with properties {name:"couverture"}
make new folder at lechemin with properties {name:"corps-de-livre"}
end tell

Cordialement
Matt
 

Fichiers joints

  • Capture d’écran 2022-12-14 à 14.36.14.png
    Capture d’écran 2022-12-14 à 14.36.14.png
    75,2 KB · Affichages: 30
Bonjour,

En lisant ta demande, Tu ne parle pas des nouveaux dossiers "Corps-de-livre" et "couverture", faut 'il les créer ?
L'ensemble des fichiers et dossiers existant dans le dossier original, seront donc dupliqué 2 fois, une fois dans "fl1" et une fois dans "fl2" ou dans le dossier couverture comme le laisse penser ta copie d'écran ?
C'est pas trop clair !... ;)
Avec ces détails on pourra envisager l'écriture d'un script.
 
Je t'ai préparé ce script.
Il te demande de choisir le dossier à traiter
Il te demande le chiffre ISBN
il insère les - dans les chiffres de l'ISBN
il crée un nouveau dossier avec le nom modifié
Il crée les 3 dossiers "fl." et les 2 dossiers "couverture"et "corps de livre"
Il transfère tout le contenu du dossier original dans les dossier Fl."
Il duplique le fichier DATAMATRIX_000.pdf
puis il efface le dossier original.

Dis moi si c'est bien ce que tu voulais !
N'oublies pas de faire des essais sur des copies ( risques puisqu'il efface l'original)

Bloc de code:
tell application "Finder"
   
    set lechemin to choose folder with prompt "Sélectionnez le Dossier principal à traiter ?"
    display dialog "Entrer le chiffre à ajouter à l'ISBN :" default answer ""
    set lechiffre to text returned of result
    set ledossier to name of lechemin
    set isbn to characters 1 thru 3 of ledossier & "-" & character 4 of ledossier & "-" & characters 5 thru 7 of ledossier & "-" & characters 8 thru 12 of ledossier & "-" & lechiffre as text
    set lenomdossier to characters 13 thru -4 of ledossier as text
   
    repeat with i from 1 to count lenomdossier
        if item i of lenomdossier is " " then
            set lenomdossier to items 1 thru (i - 1) of lenomdossier & "-" & items (i + 1) thru -1 of lenomdossier
        end if
    end repeat
    set newnomledossier to isbn & (lenomdossier as text)
   
    set sauv to AppleScript's text item delimiters
    set AppleScript's text item delimiters to {":"}
    set chem to lechemin as string
    set chemin to text items 1 thru -3 of chem as string
    set newchemin to chemin & ":" & newnomledossier
    set AppleScript's text item delimiters to sauv
   
    make new folder at chemin with properties {name:newnomledossier}
    make new folder at newchemin with properties {name:newnomledossier & "_fl1"}
    make new folder at newchemin with properties {name:newnomledossier & "_fl2"}
    make new folder at newchemin with properties {name:newnomledossier & "_fl3"}
    make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"Corps-de-livre"}
    make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"Couverture"}
    make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"Corps-de-livre"}
    make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"Couverture"}
   
   
    -- duplique tout
    set tous to entire contents of lechemin
    set nb to count tous
   
    repeat with i from 1 to nb
        duplicate item i of tous to newchemin & ":" & newnomledossier & "_fl1"
    end repeat
    repeat with i from 1 to nb
        duplicate item i of tous to newchemin & ":" & newnomledossier & "_fl2"
    end repeat
    -- fin duplique
   
    --duplique le fichier datamatrix
    set ledatamatrix to "Macintosh HD:Utilisateurs:Societe:Travaux en cours:NOUVEAUTES:GABARITS:DATAMATRIX:DATAMATRIX_000.pdf"
    duplicate ledatamatrix to newchemin & ":" & newnomledossier & "_fl3"
    --fin duplique datamatrix
   
    --efface fichier original
    set ledossier to quoted form of POSIX path of lechemin
    do shell script "rm -rf " & ledossier
end tell
 
En observant de plus près tes copies d'écran il semblerais que la copie des fichiers et dossiers originaux se fait dans le dossier "Couverture" et pas dans les dossiers "....Flx", comme dis dans tes explications .
Si tu veux changer cela fait moi signe...
 
Bonjour,
C'est génial...
3 trucs qui reste à faire
Il y a les majuscules restantes et les apostrophes à supprimer dans le nom de fichier si possible
Tout le contenu doit se trouver dans "couverture"
Et le datamatrix.pdf ne se copie pas...
error "Erreur dans Finder : Le gestionnaire ne peut gérer des objets de cette classe." number -10010

Maintenant je vais éplucher ce script...

Merci encore Zeltron
Cordialement

Matt
 
Dernière édition:
Bonjour,
je ne comprend pas ce que tu veux dire par majuscule restante !

Ok je modifie le script pour mettre dans couverture !

Edit: je viens de voir ta modif !
Il faut donc remplacer les Majuscules par des minuscules et les apostrophes par ???
Donne un exemple ...
 
Dernière édition:
je pensais ...
repeat with i from 1 to nb
duplicate item i of tous to newchemin & ":" & newnomledossier & "_fl1" & ":" & couverture
end repeat
repeat with i from 1 to nb
duplicate item i of tous to newchemin & ":" & newnomledossier & "_fl2" & ":" & couverture & ":" &
end repeat
-- fin duplique

.... mais ça ne marche pas
 
J'essaye de savoir si ma logique est bonne, en aucun cas de t'offenser... Je viens d'y mettre un doigt dedans...

make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"Couverture"}
et
make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"Couverture"}

Je pense qu'il faut les enregistrer en tant que variable...
Pour y placer le contenu
duplicate item i of tous to variable 1
duplicate item i of tous to variable 2

Mais comment les enregistrer en variable...
"Apprend moi, ma coupe est vide"

Matt
 
Ok !

Essai ce script et dis-moi si cela te convient .

Bloc de code:
tell application "Finder"
    
    set lechemin to choose folder with prompt "Sélectionnez le Dossier principal à traiter ?"
    display dialog "Entrer le chiffre à ajouter à l'ISBN :" default answer ""
    set lechiffre to text returned of result
    set ledossier to name of lechemin
    set isbn to characters 1 thru 3 of ledossier & "-" & character 4 of ledossier & "-" & characters 5 thru 7 of ledossier & "-" & characters 8 thru 12 of ledossier & "-" & lechiffre as text
    set lenomdossier to characters 13 thru -4 of ledossier as text
    
    repeat with i from 1 to count lenomdossier
        if item i of lenomdossier is " " then
            set lenomdossier to items 1 thru (i - 1) of lenomdossier & "-" & items (i + 1) thru -1 of lenomdossier
        end if
    end repeat
    
    set lenomdossier to lenomdossier as text
    set lenomdossier to my remplace(lenomdossier)
    set newnomledossier to isbn & (lenomdossier as text)
    
    set sauv to AppleScript's text item delimiters
    set AppleScript's text item delimiters to {":"}
    set chem to lechemin as string
    set chemin to text items 1 thru -3 of chem as string
    set newchemin to chemin & ":" & newnomledossier
    set AppleScript's text item delimiters to sauv
    
    display dialog newnomledossier
    
    make new folder at chemin with properties {name:newnomledossier}
    make new folder at newchemin with properties {name:newnomledossier & "_fl1"}
    make new folder at newchemin with properties {name:newnomledossier & "_fl2"}
    make new folder at newchemin with properties {name:newnomledossier & "_fl3"}
    make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"corps-de-livre"}
    make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"couverture"}
    make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"corps-de-livre"}
    make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"couverture"}
    
    
    -- duplique tout
    set tous to entire contents of lechemin
    set nb to count tous
    
    repeat with i from 1 to nb
        duplicate item i of tous to newchemin & ":" & newnomledossier & "_fl1:couverture"
    end repeat
    repeat with i from 1 to nb
        duplicate item i of tous to newchemin & ":" & newnomledossier & "_fl2:couverture"
    end repeat
    -- fin duplique
    
    --duplique le fichier datamatrix
    set ledatamatrix to "Macintosh HD:Utilisateurs:Societe:Travaux en cours:NOUVEAUTES:GABARITS:DATAMATRIX:DATAMATRIX_000.pdf"
    duplicate ledatamatrix to newchemin & ":" & newnomledossier & "_fl3"
    --fin duplique datamatrix
    
    --efface fichier original
    set ledossier to quoted form of POSIX path of lechemin
    do shell script "rm -rf " & ledossier
end tell

on remplace(mavar)
    set aremplacer to {39, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90}
    set par to {45, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122}
    set nbar to count aremplacer
    set new to mavar
    
    -- remplace les caractères de la liste
    set nb to count characters in new
    set mavar to new
    
    repeat with i from 1 to nb
        set a to character i in mavar
        set lavaleur to ASCII number a
        repeat with j from 1 to nbar
            if item j of aremplacer is lavaleur then
                set newcar to ASCII character (item j of par)
                if i = 1 then
                    set new to newcar & (text 2 thru nb of new)
                    set avant to ""
                else
                    set avant to text 1 thru (i - 1) of new
                end if
                if i = nb then
                    set new to avant & newcar
                else
                    set new to avant & newcar & text nb thru -(nb - i) of mavar
                end if
            end if
        end repeat
    end repeat
    set mavar to new
end remplace
 
Merci
Il manque juste Le datamatrix.pdf.
error "Erreur dans Finder : Le gestionnaire ne peut gérer des objets de cette classe." number -10010
 
Certainement un problème de chemin...
J'ai mis
Bloc de code:
Macintosh HD:Utilisateurs:Societe:Travaux en cours:NOUVEAUTES:GABARITS:DATAMATRIX:DATAMATRIX_000.pdf
Vérifie si c'est correct.
Remplace éventuellement Utilisateurs par Users

Edit: pour t'aider à avoir le bon chemin, lance ce script qui te demande de sélectionner le fichier et te donne le chemin.
Bloc de code:
set lechemin to choose file with prompt "Sélectionnez le fichier datamatrix a incorporer ?"

display dialog lechemin as string
 
Dernière édition:
OK content pour toi !..
 
Bonjour,
Dans le script du message #10, j'avais oublié de supprimer la ligne (qui me servait de contrôle)
Bloc de code:
display dialog newnomledossier
Qui est bien sur à supprimer, je pense que tu l'avais fait ! ;) :D
 
Salut
La première fois que j'ai vu cette fenêtre, je me suis dit que c'est trop cool, je vais pouvoir vérifier...(au cas où je me trompe de touche avec mes gros doigts...)
Du coup, je l'ai laissé...

Par contre, j'ai des doublons... Excuse moi d'abuser de ton Savoir, pourrais-tu supprimer ces doublons ?

Capture d’écran 2022-12-23 à 08.14.06.png

Encore merci pour ton boulot, tu me fais gagner énormément de temps...
Cordialement
Matt
 
Bonjour,

Je ne vois pas ce que tu veux faire!
Les fichiers que l'on voit sur ta copie d'écran sont dans le dossier "couverture", et le contenu de ce dossier est la copie de ce qu'il y avait dans ton dossier original !
Donc s'il y à des doublons, ils existaient à l'origine !

Qu'elle est ta demande exacte? ...

Edit: En regardant de près le contenu des dossier "Document fonts" et "Links" avaient été dupliqués dans le dossier original !
 
Dernière édition:
Bonjour, le répertoire au début est celui-ci :
Capture d’écran 2022-12-23 à 09.57.41.png

les fichiers .eps sont dans le dossier "Llinks" et les polices dans le dossier "Documents fonts".
Le contenu de ces 2 dossiers ne doit pas être dupliqué dans couv. Ils doivent restés dans leur dossier respectif.

Cordialement

Matt
 
Oups! autant pour moi,

voici le nouveau script
J'ai laissé la fenêtre qui t'affiche le nom avant de valider
Pense à modifier le chemin du fichier DATAMATRIX

Dis moi si là c'est bon !

Bloc de code:
tell application "Finder"
    
    set lechemin to choose folder with prompt "Sélectionnez le Dossier principal à traiter ?"
    display dialog "Entrer le chiffre à ajouter à l'ISBN :" default answer ""
    set lechiffre to text returned of result
    set ledossier to name of lechemin
    set isbn to characters 1 thru 3 of ledossier & "-" & character 4 of ledossier & "-" & characters 5 thru 7 of ledossier & "-" & characters 8 thru 12 of ledossier & "-" & lechiffre as text
    set lenomdossier to characters 13 thru -4 of ledossier as text
    
    repeat with i from 1 to count lenomdossier
        if item i of lenomdossier is " " then
            set lenomdossier to items 1 thru (i - 1) of lenomdossier & "-" & items (i + 1) thru -1 of lenomdossier
        end if
    end repeat
    
    set lenomdossier to lenomdossier as text
    set lenomdossier to my remplace(lenomdossier)
    set newnomledossier to isbn & (lenomdossier as text)
    
    set sauv to AppleScript's text item delimiters
    set AppleScript's text item delimiters to {":"}
    set chem to lechemin as string
    set chemin to text items 1 thru -3 of chem as string
    set newchemin to chemin & ":" & newnomledossier
    set AppleScript's text item delimiters to sauv
    
    display dialog newnomledossier
    
    make new folder at chemin with properties {name:newnomledossier}
    make new folder at newchemin with properties {name:newnomledossier & "_fl1"}
    make new folder at newchemin with properties {name:newnomledossier & "_fl2"}
    make new folder at newchemin with properties {name:newnomledossier & "_fl3"}
    make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"corps-de-livre"}
    make new folder at newchemin & ":" & newnomledossier & "_fl1" with properties {name:"couverture"}
    make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"corps-de-livre"}
    make new folder at newchemin & ":" & newnomledossier & "_fl2" with properties {name:"couverture"}
    
    
    -- duplique les dossiers
    set lesdossiers to folders of lechemin
    set nb to count lesdossiers
    repeat with i from 1 to nb
        duplicate item i of lesdossiers to newchemin & ":" & newnomledossier & "_fl1:couverture"
    end repeat
    repeat with i from 1 to nb
        duplicate item i of lesdossiers to newchemin & ":" & newnomledossier & "_fl2:couverture"
    end repeat
    --duplique les fichiers
    set lesfichiers to files of lechemin
    set nb to count lesfichiers
    repeat with i from 1 to nb
        duplicate item i of lesfichiers to newchemin & ":" & newnomledossier & "_fl1:couverture"
    end repeat
    repeat with i from 1 to nb
        duplicate item i of lesfichiers to newchemin & ":" & newnomledossier & "_fl2:couverture"
    end repeat
    -- fin duplique
    
    --duplique le fichier datamatrix
    set ledatamatrix to "Macintosh HD:Utilisateurs:Societe:Travaux en cours:NOUVEAUTES:GABARITS:DATAMATRIX:DATAMATRIX_000.pdf"
    duplicate ledatamatrix to newchemin & ":" & newnomledossier & "_fl3"
    --fin duplique datamatrix
    
    --efface fichier original
    set ledossier to quoted form of POSIX path of lechemin
    do shell script "rm -rf " & ledossier
end tell

on remplace(mavar)
    set aremplacer to {39, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90}
    set par to {45, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113, 114, 115, 116, 117, 118, 119, 120, 121, 122}
    set nbar to count aremplacer
    set new to mavar
    
    -- remplace les caractères de la liste
    set nb to count characters in new
    set mavar to new
    
    repeat with i from 1 to nb
        set a to character i in mavar
        set lavaleur to ASCII number a
        repeat with j from 1 to nbar
            if item j of aremplacer is lavaleur then
                set newcar to ASCII character (item j of par)
                if i = 1 then
                    set new to newcar & (text 2 thru nb of new)
                    set avant to ""
                else
                    set avant to text 1 thru (i - 1) of new
                end if
                if i = nb then
                    set new to avant & newcar
                else
                    set new to avant & newcar & text nb thru -(nb - i) of mavar
                end if
            end if
        end repeat
    end repeat
    set mavar to new
end remplace
 
Les doublons ont disparus...
Encore merci pour ta gentillesse de partager ton savoir
Bonne continuation
Et bonnes fêtes de fin d'année

Cordialement
Matt
 
Dernière édition: