Version imprimable du sujet

Cliquez ici pour voir ce sujet dans son format original

Forums MacBidouille _ Technologies Apple _ AppleScript - Comment remplacer un alias par son original

Écrit par : Xdave 14 May 2007, 11:46

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...

Écrit par : zacromatafalgar 14 May 2007, 12:23

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...[attachmentid=16749]

Écrit par : Xdave 14 May 2007, 15:04

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?

Écrit par : zacromatafalgar 14 May 2007, 15:29

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

Écrit par : Xdave 14 May 2007, 16:14

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+

Écrit par : zacromatafalgar 14 May 2007, 16:26

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"...

Écrit par : p1ngu01 15 May 2007, 08:49

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 http://forum.macbidouille.com/index.php?s=&showtopic=182700&view=findpost&p=1832522.

Écrit par : jduffas 6 Mar 2008, 22:51

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

Écrit par : Rainforest 29 Mar 2019, 14:22

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!


Écrit par : Zeltron54 30 Mar 2019, 08:37

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

Écrit par : Rainforest 31 Mar 2019, 09:50

Merci Zeltron! Je vais essayer ça cette semaine. Bon dimanche

Écrit par : Zeltron54 1 Apr 2019, 07:36

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


Propulsé par Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)