2 votos

Selección de un archivo aleatorio en AppleScript

Estoy tratando de hacer un script que pueda seleccionar/mostrar/abrir un archivo al azar de una carpeta y sus subcarpetas. El siguiente script:

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

Da el siguiente error:

error "Finder tiene un error: No se puede obtener la carpeta \ "/Volumes/Expansion Drive/Photos"." número -1728 de la carpeta "/Volumes/Expansion Drive/Photos"

¿Cuál es la sintaxis correcta? Es un iMac de finales de 2013 con OS X 10.10.5.

0 votos

Nota: La carpeta está en un volumen NTFS en un disco duro externo.

2voto

0942v8653 Puntos 3617

Como está utilizando la sintaxis de rutas POSIX, tiene que utilizar POSIX file para obtener el objeto en esa ruta:

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

0voto

SPRBRN Puntos 1008

Uso del Finder para obtener listas de archivos puede ser problemático además de ser muy largo. Yo recomendaría recurrir a herramientas unix como esta...

#
# Get list of files...
#   For example: all .txt files (not folders) under Downloads and below.
#
try
    set filelist to (do shell script "find ~/Downloads -type f -name '*.txt'")
on error eStr
    # Do something here...
    log eStr
end try

# Count the results
set n to count every paragraph in filelist

# Get a random no
set n to (get random number from 1 to n)

# Get the nth item from the results...
get paragraph n of filelist

0voto

S.Doe_Dude Puntos 46

Comprueba un short script (de otra parte) para ver cómo se puede utilizar para renombrar archivos en orden ascendente. De esta manera se puede tener una idea de cómo funcionan los índices. Hice el script de abajo que me funciona. Establece el índice de los archivos que están en la carpeta. En la carpeta tengo cada archivo con el nombre de file1.. file2.. file3..

El script funciona de la siguiente manera: establece el índice basado en el número de archivos, luego elige un número aleatorio entre el número más bajo al índice de archivos y luego uso la GUI con "Eventos del sistema" para decirle a la terminal que abra un archivo con el número aleatorio.

Nota: Aprovecho una maravillosa herramienta de Terminal que con el tabulador puedes terminar de escribir hasta el final del archivo previsto para no tener que escribir el resto. Enlace de cómo hacerlo

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X