Pourquoi AppleScript n'éjecte-t-il pas mon volume?

0

J'ai un disque dur dans mon mac avec plusieurs partitions et je veux en éjecter certaines avec AppleScript. Simple:

tell application "Finder" 
    eject disk "Photos"
end tell

Sauf que ça ne marche pas. Je peux éjecter le lecteur de l'Utilitaire de disque sans problème; la voici juste après avoir éjecté:

entrez la description de l'image ici

La question est donc, comment puis-je déboguer cette situation - qu'est-ce qui pourrait mal se passer?

Alesh Houdek
la source
AppleScript renvoie-t-il une erreur quelconque ou échoue-t-il en mode silencieux? Cela échoue-t-il lorsque vous l'exécutez dans l'éditeur de script? Comment ça se passe?
Hawken Rives

Réponses:

1

J'ai eu le même problème. La commande Finder eject semble ne pas être en mesure d’éjecter des volumes bien que, d’après ce que j’ai trouvé sur Internet, il a fonctionné entre 10.4 et 10.6.

Le script suivant fonctionne. Je l'ai enregistré en tant qu'application dans l'éditeur de script et je l'ai ajouté en tant qu'objet de départ. Fonctionne bien dans mon cas.

tell application "Finder"
    set d to disk "Photos"

    if (exists d) then
        say "Disk exists"
    else
        say "Disk does not exist"
    end if
    if (d is local volume) then
        say "Disk is a local volume"
    else
        say "Disk is not a local volume"
    end if

    if (d is ejectable) then
        say "Disk is ejectable"
    else
        say "Disk is not ejectable"
    end if

    -- This fails because the disk is not ejectable
    eject d
end tell

-- Solution: Use Disk Utility directly
tell application "Terminal"
    do shell script "d=\"/Volumes/Photos\"; if [ -d \"$d\" ]; then diskutil eject $d; fi"
end tell
Fabien
la source
0

Quelqu'un a posté ceci et quand j'ai rechargé la page, elle avait disparu! Je ne sais pas pourquoi: semble fonctionner !:

diskutil eject "/Volumes/Photos"

C'est un script shell, pas un AppleScript, mais comme je le déclenche dans Keyboard Maestro, c'est tout aussi bien.

Alesh Houdek
la source