2010-06-23 5 views
0

J'ai un script shell qui sort les noms de fichiers (un par ligne). Je veux mettre cette sortie dans une liste dans AppleScript.Définir la liste de sortie du script shell dans AppleScript

Comment est-ce que je peux faire ceci?

Des points supplémentaires sur la façon de transformer ensuite ces chaînes de fichiers en objets fichier.

EDIT:

Lorsque vous essayez ceci:

set theFiles to {} 
repeat with i from 1 to count of filenames 
    set end of theFiles to (POSIX file (item i of filenames)) 
end repeat 

Je reçois ceci:

error "Finder got an error: Can’t get POSIX file \"/path/to/file\"." number -1728 from file "Macintosh HD:path:to:file" 

EDIT-2:

Turns out finder n'a pas connaissance d'un fichier cela est créé après le début de l'instruction "tell". Comment puis-je le mettre à jour ou le rendre attentif au nouveau fichier?

EDIT-3:

Cela a fonctionné (notez l'ajout de "mon"):

set theFiles to {} 
repeat with i from 1 to count of filenames 
    set end of theFiles to (my POSIX file (item i of filenames)) 
end repeat 
+0

C'est une erreur "Finder". Le Finder ne connaît pas cette commande et donc les erreurs. Prenez cette commande hors de votre bloc Finder tell. C'est une commande standard d'applescript pas une commande de trouveur. – regulus6633

Répondre

2
set myFilenamesList to paragraphs of (do shell script "path/to/shell/script") 
set firstFileObject to POSIX File (item 1 of myFilenamesList) 

Lorsque vous avez une liste, vous utilisez une boucle de répétition à itérer sur la liste et faire quelque chose avec les éléments de la liste. Par exemple, si vous voulez une liste des objets du fichier, vous pouvez le faire.

set fileObjectsList to {} 
repeat with i from 1 to count of myFilenamesList 
set end of fileObjectsList to POSIX File (item i of myFilenamesList) 
end 
return fileObjectsList 

Bien sûr, il ne fait pas beaucoup de sens de le faire, car une fois que vous avez les objets de fichier dans une liste, vous devrez répéter sur cette liste pour faire quelque chose avec ces objets ... ainsi vous Je vais répéter 2 fois sur une liste quand 1 fois suffirait probablement. Donc, je ferais quelque chose comme ça à la place ...

repeat with i from 1 to count of myFilenamesList 
set thisFileObject to POSIX File (item i of myFilenamesList) 
-- do something with the file object "thisFileObject" 
end 
+0

Comment créer des objets de fichier pour tous les noms de fichiers. J'en ai besoin dans un objet de liste. –

+0

Ran dans un attelage. Voir ma modification. –