IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> AppleScript pour compresser des fichiers, Compresser et nommer l'archive créée
Options
sansnom
posté 24 Feb 2012, 12:38
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Bonjour, je fais appel à la communauté afin de trouver une solution à une attente simple :
compresser une sélection de fichiers/dossiers dans le Finder en ayant la possibilité de saisir le nom de la future archive.

Actuellement, on peut compacter des fichiers via la commande "Compresser" du Finder, sur un fichier, un dossier ou plusieurs d'entre eux.
Ce que je trouve vraiment très con, c'est que l'archive est toujours nommée de la même manière : "Archive.zip".

Avec un AppleScript (lancé depuis Keyboard Maestro, pour mon cas...), en ayant au préalable sélectionné les éléments du Finder à traiter, j'imagine une boîte de dialogue proposant de nommer la future archive. Il suffirait ensuite de valider en cliquant sur le bouton OK et le tour est joué...

Après une longue recherche sur le web, et avec ma très faible connaissance en programmation, j'abdique et me tourne vers vous.

Merci pour votre écoute. Dans l'attente "fébrile" de vos solutions...

Amicalités.

Ce message a été modifié par sansnom - 24 Feb 2012, 12:40.


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
CMJS
posté 27 Feb 2012, 09:41
Message #2


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



Je te conseille de passer par le shell :

Code
do shell script "/usr/bin/ditto -c -k -rsrc " & (quoted form of (POSIX path of chemin_du_fichier_ou_dossier_à_compresser) & " " & (quoted form of (POSIX path of chemin_où_enregistrer_le_zip & ".zip"))


Ça marche ?


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post
sansnom
posté 27 Feb 2012, 11:13
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Citation (CMJS @ 27 Feb 2012, 09:41) *
Je te conseille de passer par le shell :

Code
do shell script "/usr/bin/ditto -c -k -rsrc " & (quoted form of (POSIX path of chemin_du_fichier_ou_dossier_à_compresser) & " " & (quoted form of (POSIX path of chemin_où_enregistrer_le_zip & ".zip"))


Ça marche ?

Merci CMJS pour ton attention. Je me demande cependant, n'étant pas programmeur, comment ce code peut afficher la boite de dialogue (comme je l'avais évoqué dans mon post) afin de saisir le nom de l'archive... Mais, encore une fois, je ne suis pas une pointure en programmation... ;-)


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
CMJS
posté 27 Feb 2012, 12:56
Message #4


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



L’utilisateur ne doit entrer que le nom de l’archive ? Quel serait le chemin complet ?
L’interaction avec l’utilisateur se fait simplement par :
Code
set nom_de_l_archive to text returned of (display dialog "Quel nom voulez-vous donner à l'archive ?" default answer "")


Après, à toi de concaténer ce nom avec le chemin que tu veux avec & (set chemin_où_enregistrer_le_zip to chemin_vers_le_dossier & nom_de_l_archive & « .zip », par exemple).


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post
sucellus
posté 27 Feb 2012, 23:05
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (CMJS @ 27 Feb 2012, 09:41) *

Bonsoir

Une question sur une commande que je comprend pas.

Avec le terminal je suis NUL.

Pourquoi ça marche avec certains fichiers et dossiers ta commande, mais les applications en bundles ça compresse que les dossiers resources.

Mon code, totalement débile, mais seulement pour comprendre comment j'ai tenté de tester ta solution.

Code
on open droppedItems
    set nom_de_l_archive to text returned of (display dialog "Quel nom voulez-vous donner à l'archive ?" default answer "")
    if last character of nom_de_l_archive is not ":" then set nom_de_l_archive to nom_de_l_archive & ":"
    set chemin_ou_enregistrer_le_zip to (path to desktop as text) & nom_de_l_archive as string
    do shell script "/bin/mkdir -p " & quoted form of POSIX path of ((path to desktop as text) & nom_de_l_archive) as string
    
    repeat with chemin_du_fichier_a_compresser in droppedItems
        try
            set nom_du_fichier_lue to (do shell script "basename" & space & quoted form of (POSIX path of chemin_du_fichier_a_compresser)) as string
            do shell script "/usr/bin/ditto -c -k -rsrc " & (quoted form of (POSIX path of (chemin_du_fichier_a_compresser as string))) & " " & (quoted form of (POSIX path of (chemin_ou_enregistrer_le_zip & nom_du_fichier_lue & ".zip" as string)))
        end try
    end repeat
end open


Je présume que c'est que j'utilise toujours Léopard 10.5.8 et que mon système est trop ancien pour utiliser ton code.

PS: publier un code, permet de voir les âneries d'écritures (j'ai cité que j'était nul, plus haut donc pour confirmation).

Cordialement

Ce message a été modifié par sucellus - 27 Feb 2012, 23:11.


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
CMJS
posté 28 Feb 2012, 09:29
Message #6


Macbidouilleur d'argent !
***

Groupe : Membres
Messages : 757
Inscrit : 9 Aug 2006
Lieu : Ici, pourquoi ?
Membre no 65 624



Hé hé ! Je suis aussi nul que toi smile.gif
Je ne connaissais pas, pour ma part, les commandes dirname et basename qui m’ont l’air bien utiles… Merci !

A mon avis, il faudrait jeter un œil dans le man de ditto. Ou choisir une autre commande de compression de fichier.


--------------------
Jean-Marie Schwartz
[MacPro Quad-Core Intel Xeon 2,8 GHz • OS 10.10.5 • QuarkXPress 9.5.4.1 et 2017 • Adobe CS5 et CS6 • Linotype FontExplorerX Pro]

« A l'école, c'est logique, l'écologie il faudrait l'enseigner : réapprendre la grammaire de l'eau, de l'air ou de la lumière… » (CharlElie Couture, « Les Ours blancs », in Fort Rêveur)
Go to the top of the page
 
+Quote Post
sansnom
posté 28 Feb 2012, 10:22
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Citation (CMJS @ 27 Feb 2012, 12:56) *
L’utilisateur ne doit entrer que le nom de l’archive ? Quel serait le chemin complet ?

Oui, l'utilisateur sélectionne les Fichiers ou Dossiers sous le Finder, invoque un raccourcis afin de lancer le script (avec Keyboard Maestro, par exemple). Le script affiche une boîte de dialogue invitant à saisir le nom de la future archive compactée et pour finir, l'archive se créée au même niveau que les éléments sélctionnés initialement.

Donc, j'imagine que le script doit être générique pour fonctionner dans n'importe quel contexte et qu'il doit pouvoir dynamiquement situer où se trouvent les Fichiers ou Dossiers à traiter pour placer l'archive compactée.

L'idéal aussi serait aussi d'effectuer des tests sur le nom de l'archive afin qu'elle soit correcte et qu'il ne rentre pas en conflit avec une archive existante.

Voici une simulation de la boîte de dialogue imaginée :

;-)

PS : je ne sais pas pour vous, mais il me semble que cette manipulation est parfaitement évidente. Actuellement, sous Mac OS, l'archive créée n'est même pas sélectionnée après le compactage afin de pouvoir immédiatement éditer son nom et je doute qu'”Archive.zip” contente tout le monde ! L'option demandée de pouvoir supprimer les sources peut aussi être pertinente dans certains cas. Quant à pouvoir définir quel type de compression (comme .RAR, par exemple), on pourrait l'envisager DANS le code même du script afin de satisfaire le plus grand nombre...

Ce message a été modifié par sansnom - 28 Feb 2012, 15:42.


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 29 Feb 2012, 10:37
Message #8


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 28 Feb 2012, 10:22) *

Bonjour

Un code testé en Glisser-Déposer ouvre une fenêtre demandant le nom de la future archive et où placer les archives.
Cette demande se fait à chaque éléments à compresser.

Compresse les fichiers, dossiers, bundles, etc...

La gestion des noms en doublons et la suppression des originaux est alors à ajouter.

C'est ce genre de code que tu recherche?

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 29 Feb 2012, 10:52
Message #9


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Citation (sucellus @ 29 Feb 2012, 10:37) *
Citation (sansnom @ 28 Feb 2012, 10:22) *

Bonjour
Un code testé en Glisser-Déposer ouvre une fenêtre demandant le nom de la future archive et où placer les archives.
Cette demande se fait à chaque éléments à compresser.
Compresse les fichiers, dossiers, bundles, etc...
La gestion des noms en doublons et la suppression des originaux est alors à ajouter.
C'est ce genre de code que tu recherche?
@+

Bonjour Sucellus, si tu peux jeter un œil à mon précédent post, tu trouveras quelques indications... Merci de ton attention.

Je joins aussi un code d'Erical** qui affiche une boîte de dialogue pour renommer un Fichier/Dossier. Il fonctionne assez bien, mais la gestion de l'extention du nom de fichier est aléatoire. Peut-être que cela pourra aider. Ce genre de script me semble très pratique : on invoque un raccourcis clavier pour afficher une boîte de dialogue, on saisi le nom, on valide et c'est tout ! L'attention se focalise, ici, sur le champ de saisie de la boîte de dialogue. Bien plus pratique que de sélectionner sous le Finder un Fichier/Dossier, de taper la touche Entrée et d'éditer le nom dans un contexte peu ergonomique : petitesse de la typo…

Code
tell application "Finder"
    set theSelectFinder to selection
    if theSelectFinder is {} then return
    set theSelectFinder to item 1 of theSelectFinder
    set theSelectFinderExtension to name extension of theSelectFinder
    set oldName to name of theSelectFinder
end tell

if theSelectFinderExtension is missing value or theSelectFinderExtension is "" then
    set newName to oldName
    set libelleDialog to "dossier"
else
    set newName to (characters 1 thru ((length of oldName) - (length of theSelectFinderExtension) - 1) of oldName) as string
    set libelleDialog to "fichier"
    
end if

set theDialogBox to "Le nouveau nom est :"

repeat
    tell application "System Events"
        activate
        
        try
            display dialog theDialogBox with icon (path to resource "GenericQuestionMarkIcon.icns" in bundle ((path to library folder from system domain as string) & "CoreServices:CoreTypes.bundle") as alias) with title "Renommer le " & libelleDialog & " \"" & oldName & "\"" default answer oldName
        on error
            return
        end try
        
        set newName to text returned of the result
    end tell
    
    
    if newName is not "" and ":" is not in newName then
        
        tell application "Finder"
            
            if not (exists item newName in container of theSelectFinder) then
                if theSelectFinderExtension is missing value or theSelectFinderExtension is "" then
                    set newName to newName
                else
                    set newName to newName & "." & theSelectFinderExtension
                end if
                set name of theSelectFinder to newName
                return
            end if
            
            set theDialogBox to "Le " & libelleDialog & " \"" & newName & "\" existe déjà !" & return & return & "Choisissez un autre nom :"
            
        end tell
        
    end if
    
end repeat


Merci encore...

Ce message a été modifié par sansnom - 29 Feb 2012, 18:22.


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 2 Mar 2012, 18:54
Message #10


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 28 Feb 2012, 10:22) *

Bonsoir

Un test sur ta demande, pour voir si une solution acceptable en Applescript.

Ce que fait mon code:

Travaille en multiples sélections.

Une fenêtre de dialogue qui demande le nouveau nom à donner à l'élément à zipper (affiche le nom de l'élément lue pour un contrôle).
Contrôle que le nom à donner au fichier .zip n'est déjà pas utilisé dans le dossier de réception (si utilisé, demande de changer le nom).

Si le nom est accepté, alors zippe l'élément lue dans le dossier où se trouve l'original et supprime où pas l'original, suivant le bouton sélectionné.

Marche chez moi avec les fichiers, dossiers et applications en bundle.

Donc ta recherche en Applescript, je pense que c'est possible de la faire fonctionner.

J'ai pas le temps de tester avec tous les types d'éléments utilisés par OS X, et ce code inutile pour moi, donc mise en quarantaine avant de finir à la corbeille.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 3 Mar 2012, 10:19
Message #11


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Bonjour Sucellus...

Ce que fait ton code:
Travaille en multiples sélections.
Oui, script valable pour un fichier, un dossier ou les deux... en fait, n'importe quelle sélection.

Une fenêtre de dialogue qui demande le nouveau nom à donner à l'élément à zipper (affiche le nom de l'élément lue pour un contrôle).
Oui, comme le proposait ma copie d'écran.

Contrôle que le nom à donner au fichier .zip n'est déjà pas utilisé dans le dossier de réception (si utilisé, demande de changer le nom).
Parfait, et surtout placement de la future archive au même niveau que les sources compactées.

Si le nom est accepté, alors zippe l'élément lue dans le dossier où se trouve l'original et supprime où pas l'original, suivant le bouton sélectionné.
Génial !

Marche chez moi avec les fichiers, dossiers et applications en bundle.
Très bien !

Donc ta recherche en Applescript, je pense que c'est possible de la faire fonctionner.
Okay !

J'ai pas le temps de tester avec tous les types d'éléments utilisés par OS X, et ce code inutile pour moi, donc mise en quarantaine avant de finir à la corbeille.
Kézako ? Comprends pas ! Tu as réalisé un script qui semble fonctionné et tu l'as erradiqué ? Whaou !

Ce message a été modifié par sansnom - 3 Mar 2012, 10:19.


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 3 Mar 2012, 10:54
Message #12


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 3 Mar 2012, 10:19) *
Bonjour Sucellus...

[/i]Kézako ? Comprends pas ! Tu as réalisé un script qui semble fonctionné et tu l'as erradiqué ? Whaou !

Bonjour

Je l'ai mis en quarantaine, c'est à dire en réserve.

J'ai pas le temps de tester, pour voir si il y a des éléments incompatibles.

Pour le moment, fonctionne normalement avec mes dossiers, fichiers et applications en bundle.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 3 Mar 2012, 11:18
Message #13


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Oui, parfait, bien évidemment ma demande reste... une simple demande, et peut parfaitement attendre.
Merci encore et surtout bon week-end...


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 3 Mar 2012, 11:46
Message #14


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 3 Mar 2012, 11:18) *
Oui, parfait, bien évidemment ma demande reste... une simple demande, et peut parfaitement attendre.
Merci encore et surtout bon week-end...

Bonjour

Si tester te dérange pas, je t'envoie le code.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 3 Mar 2012, 11:50
Message #15


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Bien sûr que non, c'est la moindre des choses...


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 3 Mar 2012, 13:01
Message #16


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 3 Mar 2012, 11:50) *
Bien sûr que non, c'est la moindre des choses...

Un MP en route.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 3 Mar 2012, 13:05
Message #17


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Merci, je teste dès réception...


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 4 Mar 2012, 17:36
Message #18


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 3 Mar 2012, 13:05) *

Bonjour

Ce que tu recherche c'est après des sélections, un clic droit et Comprimer les x éléments ouvre une fenêtre demandant le nouveau nom pour l'archive.

Je sais pas si AppleScript est capable de faire ça.

La il faut toucher au code créé par Apple.

Voir avec un spécialiste qui bidouille ce genre de code.

Salut


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 4 Mar 2012, 17:46
Message #19


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Citation (sucellus @ 4 Mar 2012, 17:36) *
Citation (sansnom @ 3 Mar 2012, 13:05) *

Bonjour
Ce que tu recherche c'est après des sélections, un clic droit et Comprimer les x éléments ouvre une fenêtre demandant le nouveau nom pour l'archive.
Je sais pas si AppleScript est capable de faire ça.
La il faut toucher au code créé par Apple.
Voir avec un spécialiste qui bidouille ce genre de code.
Salut

Bonsoir, tu peux relire mes précédents posts : ils sont détaillés et n'évoquent pas de clics droits (contextuels) qui sont bannis depuis Lion !
Voici ton script : il me semble tout à fait bien avancé, malgré le fait qu'il ne traite pas en UNE SEULE ET UNIQUE FOIS l'intégralité de la sélection de fichiers, et ne se lance pas depuis un lanceur comme Keyboard Maestro, ni Quickeys...
Code
tell application "Finder"
    set maSelection to get selection
end tell

if (count items of maSelection) > 0 then
    set nomExistant to ""
    
    repeat with infoSelection in maSelection
        repeat
            set {name:nom, name extension:extension, folder:dossier, package folder:bundle} ¬
                to info for (infoSelection as string) as alias
            set {bouton, nomArchive} to {button returned, text returned} ¬
                of (display dialog "Compactage de “" & nom & "”" & return & nomExistant & return & ¬
                "Nom de la future archive .zip :" default answer ¬
                "" buttons {"OK et supprimer la sélection", "Annuler", "OK"} default button 3 ¬
                with title "Créer une archive en .zip")
            set abandonner to false
            
            if bouton is "OK et supprimer la sélection" then
                set abandonner to true
            end if
            
            set infoSelection to infoSelection as string
            set {name:nom, name extension:extension, folder:dossier, package folder:bundle} ¬
                to info for infoSelection as alias
            set dossierParent to text 1 thru ((offset of nom in infoSelection) - 1) of infoSelection
            set nomExistant to (nomArchive & ".zip" as string)
            
            tell application "Finder"
                if not (file (nomArchive & ".zip" as string) exists) in folder dossierParent then
                    exit repeat
                else if nomExistant is not "" then
                    set nomExistant to "Ce nom existe déjà !"
                else if nomExistant is "" then
                    set abandonner to false
                    exit repeat
                end if
            end tell
            
        end repeat
        
        if dossier and bundle is false then
            set {source, destination} to {nom as string, dossierParent & nomArchive & ".zip" as string}
        else
            if extension is missing value then set extension to ""
            if extension is not "" then set nom to text 1 thru ((count nom) - (count extension) - 1) of nom
            set {source, destination} to {nom & "." & extension as string, dossierParent & nomArchive & ".zip" as string}
        end if
        
        set {effacer, recursive} to {POSIX path of (infoSelection as string), "r"}
        do shell script "cd " & quoted form of POSIX path of dossierParent & "; /usr/bin/zip -qo9" & ¬
            recursive & space & quoted form of POSIX path of destination & space & quoted form of source
        
        if abandonner is true then
            tell application "Finder" to delete infoSelection
        end if
        
    end repeat
    
else
    tell me to activate
    display dialog "Il n'y a pas sélection de fichiers ou de dossiers !" buttons {"OK"} default button 1 ¬
        with title "Aucune sélection…" giving up after 5
end if


Voir plus haut, j'ai donné un script qui lui se lance sous Keyboard Maestro : il sert à renommer une sélection, ce qui n'est pas très loin de notre propos.

Merci encore...

Ce message a été modifié par sansnom - 4 Mar 2012, 17:48.


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sansnom
posté 5 Mar 2012, 17:15
Message #20


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Voici un script fonctionnel : merci Sucellus...

Code
-- ZIPPER UNE SÉLECTION
-- Légal Jean Louis (4 Mars 2011)
-- Version α 0.0.1 Testé avec Leopard 10.5.8

tell application "Finder" to set les_Selections to get selection -- Vos sélections

if (count items of les_Selections) > 0 then -- Contrôle si au moins une sélection existe
    set nom_Existe to "" -- RAZ de la variable
    
    repeat
        -- Boite de dialogue
        set {bouton, nouveau_Nom} to {button returned, text returned} of (display dialog nom_Existe & return & "Donnez un nom à l'archive :" default answer "" buttons {"Oui et supprimer les originaux", "Annuler", "Oui et garder les orignaux"} default button 2 with title "CRÉER UNE ARCHIVE EN .zip")
        
        set tuer to false -- Garder les originaux
        
        if bouton is "Oui et supprimer les originaux" then set tuer to true
        
        set lue to item 1 of les_Selections as string -- Chemin du premier élément trouvé
        set lue to lue as string -- Chemin de cet item en mode texte
        set {name:nom} to info for lue as alias -- Nom de l'item lue (sans son chemin)
        set dossier_Parent to text 1 thru ((offset of nom in lue) - 1) of lue -- Chemin du dossier contenant les sélections
        
        set nom_Existe to (nouveau_Nom & ".zip" as string) -- Nom du futur fichier d'archive
        
        tell application "Finder"
            -- Contrôle que ce nom d'archive n'existe pas
            if not (file (nom_Existe) exists) in folder dossier_Parent then
                exit repeat -- Pour quitter la fenêtre de dialogue, si ce nom d'archive n'existe pas
            else if nom_Existe is not "" then -- Ce nom d'archive existe, a modifier
                set nom_Existe to "Ce nom existe -->  " & nouveau_Nom -- Texte à afficher dans la boite de dialogue
            end if
        end tell
        -- Réouverture de la boite de dialogue, si le nom d'archive existe
    end repeat
    if nouveau_Nom is "" then return
    tell application "Finder"
        -- Création du dossier temporaire avec le nom donné à l'archive
        set dossier_Provisoire to make new folder at dossier_Parent with properties {name:nouveau_Nom}
        set dossier_Provisoire to dossier_Provisoire as string -- Chemin en mode texte
        
        repeat with lue in les_Selections
            if tuer is false then -- Si garder les originaux, copie les éléments lues dans le dossier provisoire
                duplicate lue to dossier_Provisoire
            else -- Si éliminer les originaux, déplace les éléments lues dans le dossier provisoire
                move lue to dossier_Provisoire
            end if
        end repeat
        
        set chemin to (dossier_Parent & nouveau_Nom as string) -- Chemin du dossier temporaire en mode texte
        set zipQuoi to (chemin & ".zip" as string) -- Chemin du dossier temporaire avec l'extension .zip de l'archive en mode texte
    end tell
    
    -- Création de l'archive (quoted form pour prendre en compte les caractères non US) & (POSIX path pour avoir les chemins en mode UNIX)
    do shell script "/usr/bin/ditto -c -k -rsrc --keepParent " & (quoted form of (POSIX path of chemin)) & " " & (quoted form of (POSIX path of zipQuoi))
    -- Supprime le dossier temporaire
    do shell script "rm -r " & quoted form of POSIX path of (chemin as string) -- Mort définitive    
    
else
    tell me to activate -- Alerte si aucune sélection trouvée
    display dialog "Pas de sélection" buttons {"OK"} default button 1 with title "PROBLÈME" giving up after 5
end if


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post
sucellus
posté 5 Mar 2012, 17:24
Message #21


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 098
Inscrit : 4 Oct 2005
Membre no 47 253



Citation (sansnom @ 5 Mar 2012, 17:15) *
Voici un script fonctionnel : merci Sucellus...

Bonjour

Tu aurais du dire que tu l'utilise avec Lion.

@+


--------------------
Impossible de vous dire mon âge, il change tout le temps.

iMac 27" Intel core i5 3,1 Gh Mémoire vive 16 Go Mountain Lion 10.8.4
Go to the top of the page
 
+Quote Post
sansnom
posté 5 Mar 2012, 17:34
Message #22


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 146
Inscrit : 30 Jun 2005
Lieu : Loiret
Membre no 41 715



Si, si, dans un de mes précédents messages... et puis dans ma signature... Cela à certainement une importance...


--------------------
MacMini M1 (13.4.1c) 16Go • iPhone 11 Pro Max 64Go • iPadMini Wi-Fi 6ème Gén. 64Go • aTV 4K 32Go
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 utilisateur(s) sur ce sujet (1 invité(s) et 0 utilisateur(s) anonyme(s))
0 membre(s) :

 



Nous sommes le : 25th April 2024 - 11:56