IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AppleScript Discussion :

Lire et récupérer l'information "Original" d'un fichier de type Alias [AppleScript]


Sujet :

AppleScript

  1. #1
    Candidat au Club
    Homme Profil pro
    Dans le monde
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Dans le monde
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Lire et récupérer l'information "Original" d'un fichier de type Alias
    Bonjour,

    Depuis la dernière mise à jour de Sierra et jusqu'à la dernière de High Sierra, j'ai eu de gros soucies avec mes alias, et là avec la dernière mise à jour de sécurité de Mojave (la faille FaceTime) je m'aperçois que cela recommence.

    Les soucies était de l'ordre:
    _ des liens qui changeaient tous seuls;
    _ des mauvaises directions;
    _ et jusqu'à des liens qui pointaient sur eux même (le système n'aime pas du tout,)
    bref manuellement je suis arrivait à en réparer 99% sur 12000 alias, et depuis quinze jours j'ai fait une app en AppleScript et j'ai fini par réparer le pourcentage qui restait (je ne connais que très peu de chose au code,) enfin je le croyais.

    Un extrait du code que j'utilise et qui me permet de récupérer l'URL.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    use framework "/System/Library/Frameworks/Foundation.framework"
    use scripting additions
    global pKey, tBook, fileManager, fOpt
     
    set pKey to {(current application's NSURLPathKey)} # => {«class ocid» id «data optr0000000038461C93FF7F0000»}
    set tBook to {(current application's NSURLBookmarkCreationSuitableForBookmarkFile)} # => {1024}
    set fOpt to {(current application's NSFileManagerItemReplacementUsingNewMetadataOnly)} # => {1}
    tell current application's NSFileManager to set fileManager to defaultManager() # => «class ocid» id «data optr000000001004780000600000»
     
    set Chemin_Unix to "/Volumes/Philat/Philatélie_01/Philatélie/Roulette/000 - Scan/0T001_Sc10r/18780501_004400_19100501_PADI_10c_100g_SC_18760101 alias" as text
     
    set aliasURL to current application's NSURL's fileURLWithPath:Chemin_Unix
    set bookmarkData to current application's NSURL's bookmarkDataWithContentsOfURL:aliasURL |error|:(missing value)
    set values to current application's NSURL's resourceValuesForKeys:pKey fromBookmarkData:bookmarkData
    set AliasPath to (values's objectForKey:(item 1 of pKey)) as text -- on obtient le chemin de l'Alias
    , ensuite je contrôle l'existence de l'URL et la bonne direction du pointeur, de l'aide de la variable AliasPath.
    Pour exemple, dans cette variable "AliasPath" pour le "Chemin_Unix" que je lui est donné j'ai comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Valeur de AliasPath
    "/Volumes/Philat/Philatélie_01/Philatélie/Roulette/200 - Tarifs/04 - Imprimés - Papiers d'Affaire - Factures et Assimilés - 004xxx - Intérieur/18780501/04 - Imprimés/18780501_004400_19100501_PADI_10c_100g_SC_18760101"
    ce qui est la bonne adresse.
    Mais là ou le bas blesse, c'est quand je vais lire les informations (Cmd i) du fichier ou si je fait un double-clic dessus sur "18780501_004400_19100501_PADI_10c_100g_SC_18760101 alias", je suis envoyé à une autre adresse (voir l'image qui suit)

    Nom : URL Aprés ChronoSync.png
Affichages : 641
Taille : 91,5 Ko

    D'où ma question dans le titre, est-il possible de récupérer l'adresse qu'il y a dans "Original" ?

    D'avance merci pour vos réponses et aide,

    Jean-Luc

  2. #2
    Membre éprouvé

    Homme Profil pro
    Directeur de projet
    Inscrit en
    Septembre 2010
    Messages
    602
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Directeur de projet
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Septembre 2010
    Messages : 602
    Points : 1 239
    Points
    1 239
    Par défaut
    Bonsoir,
    En principe, l'original d'un alias est accessible via Applescript avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    tell application "Finder" to set mon_Original to original item of mon_Alias
    Effectivement, il arrive que cet original soit "cassé".
    Dans ce cas, cette instruction donne une erreur car elle cherche à trouver le chemin de l'original qui n'est parfois plus valide.
    Il faut alors, comme tu le suggères, passer par la fenêtre d'information. Mais elle n'est pas directement scriptable.
    Pour contourner cette limitation, tu dois passer par l'interface utilisateur simulant les touches et autres :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        tell application "Finder" to open information window of file (F_Alias as text)
        tell application "System Events" to tell process "Finder" to set R to value of static text 18 of scroll area 1 of front window
        tell application "Finder" to close front window
    Le texte 18 correspond à l'objet texte "original"de la fenêtre d'information.
    Attention, le 18 est valide depuis Snow Leopard jusqu'à ElCapitain, mais je ne l'ai pas testé sur Mojave. Il faudra peut être l'ajuster si Apple a changé le format de cette fenêtre sur des versions ultérieures (ce que je pense peu probable).

    L'inconvénient de passer via la GUI est que tu ne dois pas utiliser ton Mac pendant le script pour que la fenêtre d'information reste celle active.

    Cordialement

  3. #3
    Candidat au Club
    Homme Profil pro
    Dans le monde
    Inscrit en
    Juillet 2018
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Dans le monde
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2018
    Messages : 2
    Points : 3
    Points
    3
    Par défaut
    Bonsoir PBELL,

    Avec ton code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tell application "Finder" to open information window of file (F_Alias as text)
    tell application "System Events" to tell process "Finder" to set R to value of static text 17 of scroll area 1 of front window
    tell application "Finder" to close front window
    Sur Mojave ces "static text 17" qu'il faut.

    Je récupère l'information qu'il me faut, et ensuite je peux traiter l'erreur.

    Merci pour le tuyau,

    Amicalement,

    Jean-Luc

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Comment récupérer l'information cultureinfo d'un fichier excel
    Par pbatty1 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 04/05/2011, 17h05
  2. Réponses: 8
    Dernier message: 15/03/2011, 15h22
  3. Récupérer les informations de version de fichiers
    Par myribert dans le forum VBScript
    Réponses: 2
    Dernier message: 22/09/2006, 14h39
  4. Réponses: 5
    Dernier message: 16/03/2005, 22h17
  5. Réponses: 6
    Dernier message: 28/09/2003, 17h49

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo