Je ne suis pas du tout un expert en Applescript, mais c'est ce que j'ai glané en tâtonnant au fil des ans.
J'apprécierais des corrections s'il y a des inexactitudes, ou de meilleures méthodes mais avec quelques "pourquoi ça marche" pour les débutants ;-)
Ce que vous faites en fait, c'est demander à l'éditeur de script si la chaîne de caractères "/Users/[User]/skfhshfkh/hfjhsfhsj/"
existe ce qui est le cas, vous venez de lui dire qu'elle existe ;-)
script L'éditeur ne sait pas ce qu'est un fichier, ni comment en chercher un, donc il traite la chaîne comme une chaîne et non comme un chemin.
La façon la plus simple de le faire est d'utiliser le Finder ou les événements système qui ont leur propre routine "exists".
Dans ce premier exemple, vous pouvez saisir soit un fichier POSIX, soit un simple fichier, et adapter votre syntaxe en conséquence.
Donc, cela devrait fonctionner, pour un fichier
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
L'affichage de la boîte de dialogue en dehors de la fenêtre du Finder évite que le Finder ne vienne au devant de la scène pour la présenter.
Vous pouvez également définir votre chemin en dehors de la fonction exists elle-même.
C'est la méthode que je préfère, elle utilise System Events au lieu du 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
Notez qu'en utilisant les événements système, vous doit placer la boîte de dialogue en dehors du récit, car les événements système n'afficheront pas la boîte de dialogue elle-même.
Dans l'un ou l'autre de ces exemples, essayer de démarrer avec un fichier POSIX et tenter de concaténer le chemin supplémentaire en utilisant & "Folder:" & "Filename"
ne fera pas ce que vous attendez.
C'est un point sur lequel je ne sais pas por qué ça ne l'est pas, mais ça ne l'est pas.
Une dernière remarque - si vous cherchez un file
alors tout ce qui précède fonctionne.
Si vous êtes à la recherche d'un folder
alors utilisez ceci
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