2010-08-12 8 views
7

OK, ho pensato che sarebbe stato semplice, ma a quanto pare mi manca qualcosa di ovvio. Il mio codice è il seguente:Test a spartito per esistenza di file

set fileTarget to ((path to desktop folder) & "file$") as string 

if file fileTarget exists then 
    display dialog "it exists" 
else 
    display dialog "it does not exist" 
end if 

Facile, vero? Purtroppo, quando si esegue lo script restituisce l'errore

Can’t get file "OS X:Users:user:Desktop:files$". 

Non importa se il file esiste o no, questo è lo stesso errore che ottengo. Ho provato una dozzina di cose diverse ma mi blocca ancora.

risposta

13

Io uso questa subroutine per vedere se un file esiste o no:

on FileExists(theFile) -- (String) as Boolean 
    tell application "System Events" 
     if exists file theFile then 
      return true 
     else 
      return false 
     end if 
    end tell 
end FileExists 

Aggiustare di sale.

4

È facile tranne "esiste" è un comando Finder o Eventi di sistema. Non è un comando straightcript. Come tale, è necessario racchiuderlo in un blocco di codice dell'applicazione tell. A proposito: ecco un altro modo che non richiede un'applicazione. Funziona perché quando costruisci un percorso per un "alias" deve esistere altrimenti si ottiene un errore. Quindi potresti fare quanto segue.

set fileTarget to (path to desktop folder as text) & "file$" 

try 
    fileTarget as alias 
    display dialog "it exists" 
on error 
    display dialog "it does not exist" 
end try 

NOTA: si è verificato un errore nel codice. Stai utilizzando l'operatore & per aggiungere stringhe, ma stai sbagliando anche se stai ricevendo la risposta giusta per fortuna. Quando si utilizza l'operatore &, ciascun oggetto su entrambi i lati dell'operatore deve essere una stringa. "path to desktop folder" non è una stringa, quindi dobbiamo prima creare una stringa e poi aggiungere la stringa "file $" ad essa. Quindi fare in questo modo ...

set fileTarget to (path to desktop folder as text) & "file$" 
+0

ha ottenuto il ((percorso della cartella del desktop) e "file $") 'come stringa ' da me. È così che lo faccio da anni e non ho mai avuto un problema. –

+0

Sì, so che funziona perché all'inizio ho fatto anche così. Applescript è buono in questo modo ... aiuta a correggere gli errori minori. Se guardi il risultato dell'aggiunta prima che sia forzato su una stringa, sembra che questo "{alias" Macintosh HD: Users: hmcshane: Desktop: "," file $ "}". È una lista di 2 articoli quindi non è certo quello che cerchiamo. Speriamo che conoscere la teoria un po 'meglio aiuterà in qualcosa di più complesso in futuro che non funziona. – regulus6633

+0

Non ci ho mai pensato in questo modo, ma il tuo è molto più pulito. Grazie per il consiglio. –

0

per evitare errori originale Impossibile ottenere file "OS X: gli utenti: user: Desktop: file $". Basta aggiungere al blocco tell di script tell application "Finder" set fileTarget a ((percorso alla cartella sul desktop) & file "$") come stringa

se il file fileTarget esiste quindi finestra di visualizzazione "esiste" altro finestra di visualizzazione "non esiste" fine se fine dirà

Problemi correlati