Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[AppleScript] obtenir des infos (original item) d'un alias sans ouvrir une fenêtre du Finder ?

10 réponses
Avatar
unbewusst.sein
voil je voudrais savoir s'il existe un moyen pour obtenir des infos
(original item) d'un alias sans ouvrir une fenêtre du Finder ?

pour l'instant je demande au finder de sélectionner le fichier et
ensuite je lis l'original item (dans un try), le but étant de vérifier
si l'alias est cassé ou non et aussi d'obtenir le path du fichier
source.
--
« Sur le plus beau trône du monde,
on n'est jamais assis que sur son cul ! »
(Michel de Montaigne)

10 réponses

Avatar
Patrick Stadelmann
In article <1jj1l7b.1krgxdi8ewxjqN%,
(Une Bévue) wrote:

voil je voudrais savoir s'il existe un moyen pour obtenir des infos
(original item) d'un alias sans ouvrir une fenêtre du Finder ?



Oui, la property "original item" d'un alias (fichier) contient un alias
(class AS) identifiant la cible. A mettre dans un block "try" pour
détecter les alias cassés. Nul besoin d'ouvrir une fenêtre.

Patrick
--
Patrick Stadelmann
Avatar
unbewusst.sein
Patrick Stadelmann wrote:

Oui, la property "original item" d'un alias (fichier) contient un alias
(class AS) identifiant la cible. A mettre dans un block "try" pour
détecter les alias cassés. Nul besoin d'ouvrir une fenêtre.



ah ok, je suis un peu perdu, donc, en résumé, pas besoin de sélectionné
au Finder, ça doit gagner du temps...

je teste illico !

ça le bloc try, je connais, c'est la seule méthode que j'ai trouvée pour
savoir si l'alias et cassé ou non.

autrement il faut écrire qqc en C )))
--
« Sur le plus beau trône du monde,
on n'est jamais assis que sur son cul ! »
(Michel de Montaigne)
Avatar
unbewusst.sein
Patrick Stadelmann wrote:

Oui, la property "original item" d'un alias (fichier) contient un alias
(class AS) identifiant la cible. A mettre dans un block "try" pour
détecter les alias cassés. Nul besoin d'ouvrir une fenêtre.



OK, merci, ça roule :
on orig_item(p)
set oip to missing value
tell application "Finder"
try
set oip to POSIX path of (original item of alias
(POSIX file p as text) as alias)
end try
end tell
return oip
end orig_item
set gp to "/Users/yt/dev/AppleScript/alias_test/alias_good"
set bp to "/Users/yt/dev/AppleScript/alias_test/alias_broken"
{gp, orig_item(gp), bp, orig_item(bp)}
(* Résultat :
{"/Users/yt/dev/AppleScript/alias_test/alias_good",
"/Users/yt/dev/AppleScript/alias_test/depot/test.txt",
"/Users/yt/dev/AppleScript/alias_test/alias_broken", missing value}
*)
euh, "missing value" c'est l'équivalent AS de nil ou NULL ?
--
« Sur le plus beau trône du monde,
on n'est jamais assis que sur son cul ! »
(Michel de Montaigne)
Avatar
Patrick Stadelmann
In article <1jj1zpn.17yuegn1n9mhe1N%,
(Une Bévue) wrote:

euh, "missing value" c'est l'équivalent AS de nil ou NULL ?



C'est la valeur d'une variable non initialisée. En fait, AS n'accepte
pas d'accéder une variable non définie, et on définit une variable en
l'initialisant. En utilisant "missing value" c'est comme si on la
déclarait sans l'initialiser.

C'est aussi utilisé pour les champs d'un record qui n'ont pas de valeur.
Par exemple en 10.5.8, les "items" du Finder ont tous un champ
"description" qui retourne toujours cette valeur.

Patrick
--
Patrick Stadelmann
Avatar
Patrick Stadelmann
In article <1jj1xys.1suqm5fx6dxk3N%,
(Une Bévue) wrote:

ça le bloc try, je connais, c'est la seule méthode que j'ai trouvée pour
savoir si l'alias et cassé ou non.



C'est effectivement la bonne méthode.

Patrick
--
Patrick Stadelmann
Avatar
unbewusst.sein
Patrick Stadelmann wrote:

C'est la valeur d'une variable non initialisée. En fait, AS n'accepte
pas d'accéder une variable non définie, et on définit une variable en
l'initialisant. En utilisant "missing value" c'est comme si on la
déclarait sans l'initialiser.

C'est aussi utilisé pour les champs d'un record qui n'ont pas de valeur.
Par exemple en 10.5.8, les "items" du Finder ont tous un champ
"description" qui retourne toujours cette valeur.



ok bon mon "missing value" ça va rouler, peu de chance qu'un path ait
cette valeur... c'est juste pour ne retourner qu'une valeur (string)
signifie que l'alias est broken.

c'est quand même curieux AS...
je ne m'y habituerai jamais )))
--
« Sur le plus beau trône du monde,
on n'est jamais assis que sur son cul ! »
(Michel de Montaigne)
Avatar
blanc
Une Bévue wrote:

c'est quand même curieux AS...
je ne m'y habituerai jamais )))



+1 :-/

--
JiPaul.
/ /--/--// Jean-Paul Blanc
|/| L | quelquepart en (somewhere in)
/|| = ||| FRANCE
Avatar
unbewusst.sein
JiPaul wrote:


> c'est quand même curieux AS...
> je ne m'y habituerai jamais )))

+1 :-/



le pire, pour moi, est que je n'utilise pas vraiment AppleScript mais le
bridge AppScript qui permet de contr^ler les standaraddition le finder
et d'autres applis depuis ruby 1.9

tiens au fait, pour ceux que ça intéresse, StandardAddition peut marcher
sous SL depuis ruby 1.9...

alors la syntaxe est bidonnate parce qu'en fait (avec le bridge
AppScript) elle hérite de AppleScript, of course, mais aussi de python
(je ne connais pas), qq fois c'est hyper simple, mais d'autre fois, faut
vraiment se grater la tête...


par exmple pour trouver l'original item comme je n'ai pas trouvé la
syntaxe AppScript (sans sélectionner l'alias ce qui ouvrirait une
fenêtre Finder) permettant de dire au Finder l'équivalent AppleScript je
dois écrire :
app("Finder").folders("HD").folders("Users").folders("yt").folders("Menu
").folders("Desk").alias_files("nom de
l'alias")original_item.get(:result_type => :alias)

bon avec une boucle, c'est facile à faire, mais j'aurais aimé plus
simple du genre :
app("Finder").alias_files("path complet de
l'alias")original_item.get(:result_type => :alias)

pour chaque objet on peut lister les méthodes MAIS il y en a tjs une
tripotée qui ne marchent pas...
--
« Quand tu lances la flèche de la vérité,
trempe la pointe dans du miel. »
(Proverbe arabe)
Avatar
Patrick Stadelmann
In article <1jjatbt.1cbq4wn3g929aN%,
(Une Bévue) wrote:

par exmple pour trouver l'original item comme je n'ai pas trouvé la
syntaxe AppScript (sans sélectionner l'alias ce qui ouvrirait une
fenêtre Finder) permettant de dire au Finder l'équivalent AppleScript je
dois écrire :
app("Finder").folders("HD").folders("Users").folders("yt").folders("Menu
").folders("Desk").alias_files("nom de
l'alias")original_item.get(:result_type => :alias)

bon avec une boucle, c'est facile à faire, mais j'aurais aimé plus
simple du genre :
app("Finder").alias_files("path complet de
l'alias")original_item.get(:result_type => :alias)

pour chaque objet on peut lister les méthodes MAIS il y en a tjs une
tripotée qui ne marchent pas...



C'est une problème avec ton bridge :

tell application "Finder"
get original item of alias file "chemin_complet_vers_alias" as alias
end

fonctionne très bien.

Patrick
--
Patrick Stadelmann
Avatar
unbewusst.sein
Patrick Stadelmann wrote:

C'est une problème avec ton bridge :

tell application "Finder"
get original item of alias file "chemin_complet_vers_alias" as alias
end

fonctionne très bien.



ah mais ça je suis tout à fait d'accord, d'ailleurs avant d'écrire en
Ruby/AppScript, je fais tjs un essai en AS tout court...

le "gros" pb avec ce bridge est que le dev n'a plus l'air de s'en
occuper...

bon pour original item, je l'ai trouvé, comme méthode d'alias file,
mais dans les "private methods"... (???)

--
« Quand tu lances la flèche de la vérité,
trempe la pointe dans du miel. »
(Proverbe arabe)