Applescript prova l’esistenza del file

OK, ho pensato che questo potrebbe essere un semplice, ma a quanto pare mi sto perdendo qualcosa di ovvio. Il mio codice è il seguente:

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 giusto? Purtroppo, quando ho eseguito lo script restituisce l’errore

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

Non importa se il file esiste o meno, questo è lo stesso errore che posso. Ho provato una dozzina di cose diverse, ma ancora ceppi di me.



3 Replies
  1. 18

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

    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
    

    Aggiungere il sale a piacere.

  2. 6

    È facile tranne che “esiste” è un Finder o Eventi di Sistema di comando. Non è un dritto applescript comando. Come tale è necessario avvolgerlo in un dire di applicazione del codice di blocco. FYI: ecco un altro modo che non necessita di un’applicazione. Funziona perché quando si costringere un percorso per un “alias” deve esistere altrimenti si ottiene un errore. Così si può fare come 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: c’è un errore nel codice. Stai usando il & operatore per aggiungere stringhe, ma si sta facendo male anche se stai ricevendo la giusta risposta dalla fortuna. Quando si utilizza il & operatore, ogni oggetto su entrambi i lati dell’operatore deve essere una stringa. “percorso cartella del desktop” non è una stringa, quindi per prima cosa è necessario fare una stringa e poi aggiungere la stringa “file$” ad esso. Così facciamo così…

    set fileTarget to (path to desktop folder as text) & "file$"
    
    • Ha ottenuto il ((path to desktop folder) & "file$") as string da me. Che il modo in cui ho lavorato per anni e anni e non ho mai avuto un problema.
    • Sì, so che funziona perché all’inizio ho fatto in questo modo troppo. Applescript è un bene che sia così… aiuta a correggere piccoli errori. Se si guarda il risultato della somma prima che sia costretto a una stringa sembra che questo “{alias “Macintosh HD:Users:hmcshane:Desktop:””, “file$”}”. Si tratta di un elenco di 2 elementi in modo che certamente non è quello che ci interessa. Speriamo che conoscendo la teoria un po ‘ meglio vi aiuterà con qualcosa di più complesso, in futuro, che non funziona.
    • Non ho mai pensato in quel modo, ma la tua è molto più pulito. Grazie per il suggerimento.
  3. 0

    per evitare errore originale
    Non è possibile ottenere il file di “OS X:Utenti:utente:Desktop:$ file”.
    devi semplicemente aggiungere script dire blocco
    tell application “Finder”
    set fileTarget a ((percorso alla cartella desktop) & file”$”) as string

    se il file fileTarget esiste
    visualizzare la finestra di dialogo “esiste”
    altro
    visualizzare la finestra di dialogo “non esiste”
    end if
    fine dire

Lascia un commento