Buscando elementos en la lista

1

Estoy tratando de buscar dentro de una lista de elementos (específicamente, una lista de archivos de una carpeta) para ciertos archivos. Sin embargo, no sé los nombres de estos archivos; todo lo que sé es que todos comienzan con la misma palabra (por ejemplo, "Trabajo 1", "Trabajo 2" y "Trabajo 3"). Probé este script:

tell application "Finder"

    set filelist to name of every item in folder (path to desktop)

    set endlist to {}

    repeat with i from 1 to count filelist
    if {filelist's item i}'s name begins with "Work" then set endlist's end to filelist's item i

    end repeat
end tell

que a primera vista parecería correcto, pero cuando lo ejecuto obtengo el número de error -1728 del nombre. (error "No se puede obtener el nombre de {\" archivo1 \ "}." número -1728 del nombre de {"archivo1.txt"}) (este "Archivo1" es el primer elemento en la lista de "lista de archivos")

Sé que applecript puede reconocer si un elemento de la lista comienza con "trabajo", ya que esto:

 if ((some item whose name begins with "Work") exists) then...

funciona bien, así que no estoy seguro de qué hacer a continuación ...

P.S. Por si acaso, he probado muchas iteraciones del estado "If" en el script, incluidas

  if name of {filelist's item i} begins with "Work" then...

y ninguno ha funcionado ...

    
pregunta Carlos 02.03.2013 - 00:47

1 respuesta

2

Es un problema simple de resolver.

Primero estás pidiendo los nombres de cada elemento.

set filelist to name of every item in folder (path to desktop)

Lo que devuelve una lista de los nombres. Como elementos de texto .

Entonces quieres hacer tu búsqueda. Pero en su código está solicitando el nombre del elemento de texto.

Es por eso que está recibiendo el error. El elemento de texto no tiene un nombre.

Cambia la línea:

if {filelist's item i}'s name begins with "Work" then set endlist's end to filelist's item i

a

if filelist's item i begins with "Work" then set endlist's end to filelist's item i

ACTUALIZACIÓN: En respuesta a tu comentario.

Puede crear una lista de los nombres de los elementos que se encuentran en el escritorio cuyo nombre comienza con, por ejemplo, "Trabajo"

Hacerlo de esta manera puede ser mejor.

Aquí solicita una lista que contenga los nombres de cualquier elemento encontrado cuyo nombre (devuelto como texto de un elemento de texto) comience con ...

tell application "Finder"

    set filelist to name of every item in folder (path to desktop) whose name begins with "Work"
end tell
    
respondido por el markhunte 02.03.2013 - 01:58

Lea otras preguntas en las etiquetas