Réponses:
La façon dont le script est enregistré a un grand effet sur son fonctionnement sous Mac OS X. Il semble que votre script soit simplement enregistré en tant que script et c'est ce qui fait que l'éditeur de script s'ouvre à chaque fois que vous ouvrez le script.
Pour résoudre le problème, ouvrez le script dans l'éditeur AppleScript et enregistrez-le en tant qu'application. Cela devrait faire l'affaire.
Les étapes sont (dans l'éditeur)
Fichier> Enregistrer sous> puis définissez Format de fichier sur l'application, puis enregistrez.
Lors de l'enregistrement du script, vous pouvez choisir "Application" dans la liste déroulante Format de fichier; vous pourrez ensuite l'exécuter et vous pourrez toujours le faire glisser vers l'éditeur de script pour ouvrir le script; ou vous pouvez choisir Exécuter uniquement pour ne pas enregistrer la version modifiable.
Vous pouvez également utiliser la osascript
commande dans Terminal, sous la forme osascript /path/to/script
ou ou osascript -e "a short script here"
.
Vous pouvez également placer le script dans votre dossier ~ / Library / Scripts / Finder / et l'exécuter directement à partir du menu Script.
Une autre façon consiste à créer un service dans Automator qui utilise la osascript
commande pour exécuter un .scpt dans le Finder.
(Je n'utilise pas Automator en anglais, donc la formulation peut ne pas être exacte)
Dans la zone Exécuter AppleScript, entrez le code suivant:
on run {input, parameters}
tell application "Finder"
--get the selected file
set selectedItem to (item 1 of (get selection))
--get location info (folder:file format)
set fileLocation to (selectedItem as alias) as string
--replace : with / with subroutine
set the semifinal to my replace_chars(fileLocation, ":", "/")
--remove Macintosh HD with subroutine
set the theFinal to my replace_chars(semifinal, "Macintosh HD", "")
end tell
do shell script "osascript " & "\"" & theFinal & "\""
return input
end run
on replace_chars(this_text, search_string, replacement_string)
set AppleScript's text item delimiters to the search_string
set the item_list to every text item of this_text
set AppleScript's text item delimiters to the replacement_string
set this_text to the item_list as string
set AppleScript's text item delimiters to ""
return this_text
end replace_chars
Fichier> Enregistrer, et donnez-lui un nom comme "Exécuter AppleScript"
Vous pouvez maintenant cliquer avec le bouton droit sur un fichier .scpt dans le Finder et sélectionner "Exécuter AppleScript" et voir votre script exécuté.
Référence: source du sous-programme - AppleScript: sous-routines essentielles
osascript
et ne l'avez pas codé pour le gérer si plus d'un fichier .scpt est sélectionné dans le Finder. 2. Il n'est absolument pas nécessaire de passer par un tel rigmarole de codage lorsque la seule ligne de code suivante remplace tout ce que vous avez ajouté à l'action Exécuter AppleScript. do shell script "osascript " & quoted form of POSIX path of item 1 of input
Voici un exemple minimal pour tout remplacer dans votre code AppleScript actuel: paste.ee/p/XngKA
if
bloc d'instructions peut être développé avec une else
clause qui affiche un message indiquant que le fichier sélectionné n'est pas un fichier .scpt. De cette façon, l'utilisateur ne se demande pas pourquoi rien ne s'est produit s'il ne voit pas qu'il a accidentellement sélectionné le mauvais type de fichier lors de l'exécution du service.