No soy para nada un experto en Apple, pero esto es lo que he extraído de mis propios esfuerzos a lo largo de los años.
Apreciaría las correcciones si hay alguna inexactitud, o mejores métodos ... pero con un poco de "por qué funciona" para los novatos ;-)
Lo que estás haciendo en realidad es preguntar al Editor de secuencias de comandos si existe la cadena "/Users/[User]/skfhshfkh/hfjhsfhsj/"
... lo que hace, simplemente le dijiste que sí ;-)
Script Editor no sabe qué es un archivo ni cómo buscarlo, por lo que trata la cadena como una cadena, no como una ruta.
La forma más sencilla de hacerlo es utilizar el Finder o los eventos del sistema, que tienen su propia rutina 'existe'.
En este primer ejemplo, puede ingresar como archivo POSIX o solo archivo, & ajusta tu sintaxis en consecuencia.
Por lo tanto, esto debería funcionar, para un archivo ...
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 visualización del cuadro de diálogo fuera del Finder tell evita que Finder aparezca en la parte frontal solo para presentarlo.
Alternativamente, puede establecer su ruta fuera de la propia función existente.
Este sería mi método preferido, & utiliza los eventos del sistema en lugar del buscador ...
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
Tenga en cuenta que al usar System Events, usted debe colocar el cuadro de diálogo fuera del tell, ya que System Events no mostrará el cuadro de diálogo en sí.
En cualquiera de estos ejemplos, intentar comenzar con un archivo POSIX & intentar concatenar la ruta adicional utilizando & "Folder:" & "Filename"
no hará lo que espera.
Este es un punto en el que no sé por qué no, pero no lo hace.
Una última nota: si está buscando un file
, entonces todo lo anterior funciona.
Si está buscando un folder
, entonces use esto ...
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