Non sono per niente un esperto di Applescript, ma questo è ciò che ho raccolto dal mio stesso imbarazzo nel corso degli anni.
Apprezzerei correzioni se ci sono inesattezze, o metodi migliori ... ma con un po 'perché funziona' per i neofiti; -)
Quello che stai facendo in realtà è chiedere a Script Editor se la stringa "/Users/[User]/skfhshfkh/hfjhsfhsj/"
esiste ... cosa che fa, hai appena detto che ha funzionato ;-)
Script Editor non sa cosa sia un file, né come cercarne uno, quindi considera la stringa come una stringa e non come un percorso.
Il modo più semplice per farlo è utilizzare il Finder o gli eventi di sistema che hanno la loro routine "esistente".
In questo primo esempio, puoi inserire come file POSIX o solo file, & regola di conseguenza la sintassi.
Quindi, dovrebbe funzionare, per un file ...
set msg to "No sign of it"
tell application "Finder"
--if exists POSIX file "/volumes/MacintoshHD/Users/[user]/Desktop/testFile.rtf" then
--or
--if exists file ((path to home folder as text) & "Desktop:" & "testFile.rtf") then
--or
--if exists file "MacintoshHD:Users:[user]:Desktop:testFile.rtf" then
--but NOT
--if exists POSIX file ((path to home folder as text) & "Desktop:" & "testFile.rtf") then
set msg to "Yeah, found it!"
end if
end tell
display dialog msg
La visualizzazione della finestra di dialogo all'esterno del Finder tell impedisce a Finder di arrivare in primo piano solo per presentarlo.
In alternativa, puoi impostare il tuo percorso al di fuori della funzione stessa.
Questo sarebbe il mio metodo preferito, & utilizza System Events invece di Finder ...
set theFile to ((path to home folder as text) & "Desktop:" & "testFile.rtf")
set msg to "No sign of it."
tell application "System Events"
if exists file theFile then
set msg to "Yeah, found it!"
end if
end tell
display dialog msg
Si noti che usando System Events, deve porre la finestra di dialogo all'esterno del tell, poiché System Events non visualizzerà la finestra di dialogo stessa.
In uno di questi esempi, prova ad iniziare con un file POSIX & tentare di concatenare il percorso aggiuntivo usando & "Folder:" & "Filename"
non farà quello che ti aspetti.
Questo è un punto su cui non so perché non lo fa, ma non lo è.
Un'ultima nota: se stai cercando un file
, allora tutto il lavoro sopra.
Se stai cercando un folder
, utilizza questo ...
set theFolder to ((path to home folder as text) & "Desktop:" & "testFolder:")
set msg to "No sign of it."
tell application "System Events"
if exists folder theFolder then
set msg to "Yeah, found it!"
end if
end tell
display dialog msg