IPB

Bienvenue invité ( Connexion | Inscription )

 
Reply to this topicStart new topic
> AppleScript - Comment remplacer un alias par son original
Options
Xdave
posté 14 May 2007, 11:46
Message #1


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 921
Inscrit : 2 Oct 2004
Membre no 24 540



Bonjour,

J'ai besoin d'un coup de main en AppleScript que j'ai complètement largué depuis des lustres... sad.gif
Un truc sans doute très simple...

Comment remplacer un alias par son original (en le copiant et en écrasant l'alias du coup)?

Pour expliquer le pourquoi...
J'ai un dossier plein de fichiers (les originaux, des JPEG en l'occurence)
Un autre dossier avec des sous dossiers (peu importe, je suis près à appliquer le script sur chaque dossier) pour classer ces centaines de fichiers.
Dans cet autre dossier donc des alias des fichiers contenus dans le premier dossier.

Je dois faire une manip sur les fichiers qui malheureusement ne fonctionne que sur les originaux directement. Or, j'ai besoin du classement pour effectuer cette manip et je ne veux pas le perdre.

Merci d'avance, ça urge...

Addendum: J'ai bien trouver un script shell qui convertit les alias en symlinks, ce qui devrait me permettre de faire ma manip mais le problème c'est que le finder ne permet pas de faire des liens symboliques à la "mano" et que du coup 1/ je vais me retrouver avec des alias et des liens symboliques et que 2/ ça m'oblige à être sur de mon classement avant de faire la conversion...


Ce message a été modifié par Xdave - 14 May 2007, 11:57.
Go to the top of the page
 
+Quote Post
zacromatafalgar
posté 14 May 2007, 12:23
Message #2


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 762
Inscrit : 21 Apr 2004
Lieu : St Etienne
Membre no 17 938



Salut,

En gros ça donne :

CODE
set theAlias to choose file

tell application "Finder"
    set originalFile to (original item) of theAlias
    duplicate originalFile to container of theAlias
    delete theAlias
end tell


wink.gif

ps si tu as besoin de précisions, n'hésite pas...

Edit : j'avais pas fais attention au coté urgent de la chose, aussi je te l'ai fait...

Ce message a été modifié par zacromatafalgar - 14 May 2007, 12:36.


--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense,
Notre crédulité fait toute leur science.
Voltaire - extrait d'ŒŒdipe
Go to the top of the page
 
+Quote Post
Xdave
posté 14 May 2007, 15:04
Message #3


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 921
Inscrit : 2 Oct 2004
Membre no 24 540



donc après test... ça marche pas... sad.gif
il faut peut-être dupliquer la structure de dossier avant ou supprimer l'alias avant, non?
Go to the top of the page
 
+Quote Post
zacromatafalgar
posté 14 May 2007, 15:29
Message #4


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 762
Inscrit : 21 Apr 2004
Lieu : St Etienne
Membre no 17 938



Je t'ai envoyé un MP, je pense que tu as supprimé le mot "alias" à la fin ce qui fait que l'alias à le même nom que le fichier original... smile.gif


--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense,
Notre crédulité fait toute leur science.
Voltaire - extrait d'ŒŒdipe
Go to the top of the page
 
+Quote Post
Xdave
posté 14 May 2007, 16:14
Message #5


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 921
Inscrit : 2 Oct 2004
Membre no 24 540



Pile poil... c'est bien à cause de l'absence de " alias"...
En fait le finder ajoute " alias" quand tu le fais dans le même dossier (via pomme-alt drag ou pomme-L) mais si tu le fais dans un autre dossier avec un pomme-alt drag ça ne l'ajoute pas.

Bon je vais me faire un batch qui ajoute ce " alias" sur tous ces alias et c'est parti... cool.gif

Damned tu me sauves la soirée smile.gif

Encore merci

PS: Va falloir que je m'y mettes à AppleScript... ph34r.gif :-/ si tu as un bon bouquin pour débutant de ce langage je suis preneur.

A+
Go to the top of the page
 
+Quote Post
zacromatafalgar
posté 14 May 2007, 16:26
Message #6


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 1 762
Inscrit : 21 Apr 2004
Lieu : St Etienne
Membre no 17 938



Dans le MP que je t'ai envoyé il y a la fonction modifiée qui supprime les alias avant de dupliquer les originaux de manière à ce qu'il n'y ait pas de conflit de nom, il suffit de remplacer celle du droplet par la nouvelle et tu n'auras pas à rajouter "alias"...


--------------------
Nos prêtres ne sont point ce qu'un vain peuple pense,
Notre crédulité fait toute leur science.
Voltaire - extrait d'ŒŒdipe
Go to the top of the page
 
+Quote Post
p1ngu01
posté 15 May 2007, 08:49
Message #7


Macbidouilleur d'Or !
*****

Groupe : Membres
Messages : 2 266
Inscrit : 12 Mar 2006
Lieu : City of Sails
Membre no 57 388



CITATION(Xdave @ 14 May 2007, 17:14) [snapback]2208513[/snapback]
Si tu as un bon bouquin pour débutant de ce langage je suis preneur.

Salut,
Je te conseille ces quelques liens.


--------------------
|.... je suis fiu ....|
--------------------
Go to the top of the page
 
+Quote Post
jduffas
posté 6 Mar 2008, 22:51
Message #8


Adepte de Macbidouille
*

Groupe : Membres
Messages : 117
Inscrit : 14 Jan 2003
Membre no 5 637



salut ! tu dis :

CITATION

Addendum: J'ai bien trouver un script shell qui convertit les alias en symlinks, ...


je recherche un script qui fait l' inverse : je veux convertir des symlinks en alias, saurais tu ou trouver celà ?

jean
Go to the top of the page
 
+Quote Post
Rainforest
posté 29 Mar 2019, 14:22
Message #9


Nouveau Membre


Groupe : Membres
Messages : 2
Inscrit : 29 Mar 2019
Membre no 207 736



Bonjour à tous,

Si je comprends bien cette manip traite les fichiers un par un.
Mais comment faire pour remplacer tous les alias d'un répertoire (et ses sous répertoire) par le fichier original?

J'avais trouvé la réponse sur le web il y a quelques années, et le script était même encore présent quand j'ai ouvert l'Editeur il y a une heure.
Mais mauvaise manip, j'ai refermé l'éditeur et à la réouverture : plus rien. Et impossible de retrouver la réponse.
Je ne vous cache pas que je me suis donc inscrit sur le forum juste pour poser cette question.

Merci pour votre aide!

Go to the top of the page
 
+Quote Post
Zeltron54
posté 30 Mar 2019, 08:37
Message #10


Adepte de Macbidouille
*

Groupe : Membres
Messages : 121
Inscrit : 15 Mar 2008
Lieu : Lorraine
Membre no 110 156



Bonjour,

Un petit script, pour remplacer tous les alias par leurs originaux.
Si l' original est manquant, ou si le fichier est déjà un original le script ne fait rien.
Il traite le dossier et ses sous-dossiers.
Au lancement il demande de sélectionner le dossier à traiter.
En espérant que ça te convienne.

Un conseil fait une copie de ton dossier des alias, et travaille sur cette copie, on ne sait jamais rolleyes.gif

Code
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les Alias de fichiers"
    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
            -- obtenir le chemin de l'original de l'alias
            set lefichier to chaque_fichier as string
            -- avec bloc try si fichier n'est pas un alias ou pas d'original donc erreur
            try
                set chemin to (original item) of file lefichier
                
                --duplique le fichier en lieu et place de l'alias
                duplicate chemin to un_dossier replacing yes with propeties
                
            on error the errorMessage number the errorNumber
                --display dialog errorMessage & "erreur pas d'original pour " & lefichier
            end try
            
        end repeat
        
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            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


Ce message a été modifié par Zeltron54 - 30 Mar 2019, 08:40.


--------------------
Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6)
Go to the top of the page
 
+Quote Post
Rainforest
posté 31 Mar 2019, 09:50
Message #11


Nouveau Membre


Groupe : Membres
Messages : 2
Inscrit : 29 Mar 2019
Membre no 207 736



Merci Zeltron! Je vais essayer ça cette semaine. Bon dimanche
Go to the top of the page
 
+Quote Post
Zeltron54
posté 1 Apr 2019, 07:36
Message #12


Adepte de Macbidouille
*

Groupe : Membres
Messages : 121
Inscrit : 15 Mar 2008
Lieu : Lorraine
Membre no 110 156



Bonjour,
je viens de me rendre compte, si l'alias à été renommé, alors l'original ne remplace pas l'alias , mais s'ajoute .
Pour éviter ça, il faut systématiquement supprimer l'alias avant de dupliquer l'original, pour éviter de passer par la corbeille, passer par le terminal.
ce qui donne:

Code
tell application "Finder"
    set chemin to choose folder with prompt "Sélectionnez le dossier contenant les Alias de fichiers"
    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
            -- obtenir le chemin de l'original de l'alias
            set lefichier to chaque_fichier as string
            -- avec bloc try si fichier n'est pas un alias ou pas d'original donc erreur
            try
                set chemin to (original item) of file lefichier
                
                set lefichier to quoted form of POSIX path of lefichier as string --chemin au format unix
                do shell script "rm " & lefichier -- efface l'alias sans passer par la corbeille
                
                
                duplicate chemin to un_dossier replacing yes with propeties --duplique le fichier en lieu et place de l'alias
                
            on error the errorMessage number the errorNumber
                --display dialog errorMessage & "erreur pas d'original pour " & lefichier
            end try
            
        end repeat
        
        -- traitement des dossiers :
        set les_dossiers to folders of un_dossier
        repeat with chaque_dossier in les_dossiers
            -- traitement d'un dossier
            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



--------------------
Imac 27 I7 Fusion drive fin 2013 Ram 8Go Mac OS X (10.14.6)
MacBook Pro 15 pouces mi-2012 8Go Ram Mac OS X (10.14.6)
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 : 22nd August 2019 - 00:01