Ricerca di elementi nell'elenco

1

Sto cercando di cercare all'interno di un elenco di elementi (in particolare, un elenco di file da una cartella) per determinati file. Tuttavia, non conosco i nomi di questi file; tutto quello che so è che iniziano tutti con la stessa parola (ad esempio, "Lavoro 1", "Lavoro 2" e "Lavoro 3"). Ho provato questo 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

che a prima vista sembrerebbe giusto, ma quando lo eseguo ottengo l'errore numero -1728 dal nome. (errore "Impossibile ottenere il nome di {\" file1 \ "}." numero -1728 dal nome di {"file1.txt"}) (questo "File1" sembra essere il primo elemento nell'elenco "filelist")

So che il applescript può riconoscere se un elemento nella lista inizia con "lavoro", poiché questo:

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

funziona bene, quindi non sono sicuro di cosa fare dopo ...

P.S. per ogni evenienza, ho provato molte iterazioni dello stato "If" nello script, incluso

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

e nessuno ha funzionato ...

    
posta Carlos 02.03.2013 - 00:47
fonte

1 risposta

2

È un semplice problema da risolvere.

Per prima cosa chiedi i nomi di ogni articolo.

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

Che restituisce una lista dei nomi. Come elementi di testo .

Allora vuoi fare la tua ricerca. Ma nel tuo codice stai chiedendo il nome dell'elemento di testo.

Ecco perché stai ricevendo l'errore. L'elemento di testo non ha un nome.

Cambia la linea:

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

UPDATE: In risposta al tuo commento.

Puoi creare un elenco dei nomi degli elementi trovati sul desktop il cui nome inizia con "Lavoro"

In questo modo potrebbe essere migliore.

Qui chiedi una lista contenente i nomi di qualsiasi oggetto trovato il cui nome (restituito come testo di un testo) inizia con ..

tell application "Finder"

    set filelist to name of every item in folder (path to desktop) whose name begins with "Work"
end tell
    
risposta data 02.03.2013 - 01:58
fonte

Leggi altre domande sui tag