11 votes

Comment transformer le chemin d'accès AppleScript en un chemin d'accès de type Terminal ?

J'ai un service personnalisé que j'ai créé dans Automater (je suis sous OS X 10.6.5). Le Service exécute un AppleScript qui, à son tour, exécute un shell script. Voici l'AppleScript :

on run {input, parameters}
    -- do shell script "/usr/bin/find " & input & " -type f -name .DS_Store -delete -print"
    display alert "Path: " & input
end run

Le problème est que le chemin transmis par le Service (dans la variable input ) ressemble à :

Macintosh HD:Users:Matthew:Documents:Programming:Apple Scripts:

Et pour que la commande s'exécute correctement, le chemin doit ressembler à ça :

Macintosh\ HD/Users/Matthew/Documents/Programming/Apple\ Scripts/

Alors, y a-t-il un moyen de traduire le premier chemin en second chemin ? J'espérais une fonction de base qui gère cela. Mais je suppose qu'une sorte de regex/find/replace/etc pourrait fonctionner ? Je suis familier avec HTML/CSS/Javascript/PHP, mais pas avec Cocoa/AppleScript/C. Toute indication ou suggestion serait la bienvenue !

9voto

Gordon Davisson Points 30215

Utilisez quoted form of the POSIX path of input . Sans le quoted form of il ne traitera pas correctement les caractères bizarres (comme les espaces) dans les noms de fichiers. Voir cette technote d'Apple .

6voto

Henrik Gustafsson Points 11755

Ok... c'était plus facile que je ne le pensais. Après quelques recherches sur Google, il semble que ce dont j'ai besoin ici est le fichier POSIX path of commande. Elle convertit un chemin d'accès donné en un chemin d'accès de style Unix, c'est-à-dire le type de chemin d'accès que vous verriez/utiliseriez dans le Terminal. Ainsi :

POSIX path of input

Ça me donne un chemin comme :

/Users/Matthew/Documents/Programming/Apple Scripts/

Il semble prendre en compte le fait que vous avez juste besoin d'une / au début du chemin, plutôt que le nom du disque dur. Cependant, il n'échappe pas \ des espaces (ou des caractères spéciaux de manipulation) dans le chemin. Ainsi, comme le mentionne l'autre réponse ici, vous devez placer le chemin entre guillemets ( " o ' ) afin que ces espaces (ou caractères spéciaux) soient interprétés littéralement. Pour ce faire, vous pouvez utiliser quoted form of . C'est ici :

quoted form of the POSIX path of the input
-- gives a path like: '/Users/Matthew/Documents/Programming/Apple Scripts/'

2 votes

Le site / au début du chemin est le volume de démarrage. Les autres disques durs se trouvent sous /Volumes/

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X