Não sou de maneira alguma um especialista em Applescript, mas é isso que eu recolhi dos meus próprios problemas ao longo dos anos.
Eu apreciaria correções se houver imprecisões ou métodos melhores .. mas com alguns 'por que funciona' para iniciantes ;-)
Na verdade, o que você está fazendo é perguntar ao Editor de scripts se a string "/Users/[User]/skfhshfkh/hfjhsfhsj/"
existe ... o que existe, você acabou de dizer que sim ;-)
O Editor de scripts não sabe o que é um arquivo, nem como procurá-lo, por isso está tratando a string como uma string, não como um caminho.
A maneira mais simples de fazer isso é usar o Finder ou o System Events que possuem sua própria rotina 'existe'.
Neste primeiro exemplo, você pode inserir como arquivo POSIX ou apenas arquivo, e ajustar sua sintaxe de acordo.
Então, isso deve funcionar, para um arquivo ...
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
A exibição da caixa de diálogo fora da mensagem do Finder impede que o Finder chegue à frente apenas para apresentá-la.
Como alternativa, você pode definir seu caminho fora da função existente.
Este seria o meu método preferido, e usa System Events em vez de 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
Observe que, usando Eventos do Sistema, você deve colocar a caixa de diálogo fora da caixa, pois os Eventos do Sistema não exibirão a caixa de diálogo.
Em qualquer um desses exemplos, tentar iniciar com um arquivo POSIX e tentar concatenar o caminho adicional usando & "Folder:" & "Filename"
não fará o que você espera.
Este é um ponto em que não sei por que não, mas não.
Uma última nota - se você estiver procurando por uma file
, todas as opções acima funcionam.
Se você estiver procurando por um folder
, use este…
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