3 votos

AppleScript: 'existe' devuelve true cada vez

En cada exists en AppleScript el resultado es true. Por ejemplo:

set a to (POSIX path of (((path to home folder from user domain) as text) & "skfhshfkh:" & "hfjhsfhsj:"))
if exists a then
    display dialog "AppleScript returns a wrong worth ..."
end if

El resultado es

tell current application
    path to home folder from user domain
        --> alias "Macintosh HD:Users:[User]:"
end tell
tell application "Script Editor"
    exists "/Users/[User]/skfhshfkh/hfjhsfhsj/"
        --> true
    display dialog "AppleScript returns a wrong worth ..."
        --> {button returned:"OK"}
end tell
Ergebnis:
{button returned:"OK"}

Este camino no existe, entonces, ¿dónde está el error? Es mi error o es un error en AppleScript?

Gracias por la ayuda.

3voto

Tetsujin Puntos 23061

Estoy por ningún tramo de la imaginación de un Applescript experto, pero esto es lo que he recogido de mi propia tientas a lo largo de los años.
Te agradecería correcciones si hay alguna inexactitud o mejores métodos.. pero con algunos "por qué funciona' para los novatos ;-)

Lo que realmente estamos haciendo es pidiendo Editor de secuencias de Comandos si la cadena de caracteres "/Users/[User]/skfhshfkh/hfjhsfhsj/" existe... que funciona, sólo le dijo que sí ;-)
Editor de secuencias de comandos no saben qué es un archivo es, ni cómo buscarlo, por lo que es el tratamiento de la cadena como una cadena no es un camino.

La forma más sencilla de hacer esto es usar el Buscador o el Sistema de Eventos que tienen su propia 'existe' rutina.

En este primer ejemplo, se puede introducir como POSIX archivo o file, y ajustar su sintaxis en consecuencia.

Así, este trabajo, para un archivo de...

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

Mostrar el cuadro de diálogo fuera de la búsqueda de decirle impide Buscador de venir al frente sólo a lo presente.

Alternativamente, usted puede establecer su camino fuera de la función exists sí mismo.
Esta sería mi método preferido, y utiliza los Eventos del Sistema en lugar de Buscador de...

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 el uso de los Eventos del Sistema, usted debe poner el cuadro de diálogo fuera de la decir, como los Eventos del Sistema no mostrará el cuadro de diálogo.

En cualquiera de estos ejemplos, tratando de empezar con un POSIX y archivo de intentar concatenar la ruta de acceso adicional por el uso de & "Folder:" & "Filename" no hacer lo que usted espera.
Este es un punto en el que no sé por qué no lo hace, pero no es así.

Una última nota: si usted está buscando un file, entonces todas las anteriores obras.
Si usted está buscando un folder, a continuación, utilizar esta...

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X