2 votes

Sélection d'un fichier aléatoire en AppleScript

Je suis en train d'essayer de créer un script qui peut sélectionner / afficher / ouvrir un fichier au hasard à partir d'un dossier et de ses sous-dossiers. Le script suivant:

tell application "Finder"
    get some file of (folder "/Volumes/Expansion Drive/Photos")
end tell

donne l'erreur suivante:

error "Finder a rencontré une erreur : Impossible d'obtenir le dossier \"/Volumes/Expansion Drive/Photos\"." numéro -1728 du dossier "/Volumes/Expansion Drive/Photos”

Quelle est la syntaxe correcte ? C'est un iMac fin 2013 avec OS X 10.10.5.

2voto

0942v8653 Points 6754

Parce que vous utilisez la syntaxe du chemin POSIX, vous devez utiliser fichier POSIX pour obtenir l'objet à ce chemin :

tell application "Finder"
    obtenez un fichier de (dossier (fichier POSIX "/Volumes/Expansion Drive/Photos"))
end tell

0voto

Vic Points 1820

Utiliser Finder pour obtenir des listes de fichiers peut poser des problèmes ainsi que demander beaucoup de temps. Je recommande de revenir aux outils unix comme ceci...

#
# Obtenir la liste des fichiers...
#   Par exemple: tous les fichiers .txt (pas les dossiers) sous Téléchargements et en dessous.
#
try
    set filelist to (do shell script "find ~/Downloads -type f -name '*.txt'")
on error eStr
    # Faire quelque chose ici...
    log eStr
end try

# Compter les résultats
set n to count every paragraph in filelist

# Obtenir un nombre aléatoire
set n to (get random number from 1 to n)

# Obtenir le nième élément des résultats...
get paragraph n of filelist

0voto

gotube Points 101

Découvrez un petit script (d'une autre partie) pour voir comment vous pouvez utiliser pour renommer des fichiers dans un ordre ascendant. De cette façon, vous pouvez avoir une idée de comment fonctionnent les index. J'ai créé le script ci-dessous qui fonctionne pour moi. Il définit l'index des fichiers qui se trouvent dans le dossier. Dans le dossier, j'ai nommé chaque fichier à partir de file1.. file2.. file3..

Le script fonctionne comme suit : il définit l'index en fonction du nombre de fichiers, puis choisit un nombre aléatoire entre le plus petit nombre et l'index des fichiers, puis j'utilise l'interface utilisateur graphique avec "System Events" pour dire au terminal d'ouvrir un fichier avec le nombre aléatoire.

Remarque : je profite d'un outil merveilleux du Terminal où avec la touche Tabulation vous pouvez finir d'écrire jusqu'à la fin du fichier voulu, donc pas besoin de taper le reste. Lien tutoriel

set text item delimiters to "."
tell application "System Events"
    tell application "Finder"
        set all_files to every item of alias "Macintosh:Users:Home:Documents:terminal:folder3notes" as list
        repeat with index from 1 to the count of all_files
        end repeat
        set randomnumber to (random number from 2 to index)
        say randomnumber
    end tell
    tell application "Terminal" to activate
    keystroke "open /Users/Home/documents/terminal/folder3notes/file"
    keystroke randomnumber
    key code 48
    delay 0.5
end tell

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