2009-07-11 18 views
2

Ich brauche einen Weg, um festzustellen, ob eine bestimmte Datei existiert. Wenn es existiert, dann tue ein Skript, wenn nicht, mache dann ein anderes Skript. Hier war meine Logik in Applescript:AppleScript: Wenn eine Datei nicht existiert

If exists "File:Path:To:theFile" 

tell application "Finder" 
open "File:Path:To:the:script" 
end tell 

else 

tell application "Finder" 
open "File:Path:To:the:Anotherscript" 
end tell 

end if 

Das einzige Problem ist, dass manchmal, wenn ich die obige Logik verwende das Skript sagt fehlschlägt kann die Datei nicht finden. Ich brauche einen vollständigen Beweis, versäumt nie zu sehen, ob eine Datei existiert. Ich bin offen für die Verwendung des Terminals oder AppleScript. Ich bin mir sicher, dass jemand schon einmal darauf gestoßen ist, aber ich habe im Internet nach einer Antwort gesucht, konnte aber keine finden.

Antwort

0

Das klingt nach einem guten Platz für eine try...on error block. Ich glaube, die folgendes tun, was Sie wollen:

tell application "Finder" 
    try 
     open "File:Path:To:the:script" 
    on error 
     open "File:Path:To:the:Anotherscript" 
    end try 
end tell 
+0

ich den genauen Code oben verwendet, aber es immer noch nicht manchmal. –

3

ich die Verwendung folgenden zu sehen, ob ein Objekt im Finder vorhanden:

on FinderItemExists(thePath) 
    try 
     set thePath to thePath as alias 
    on error 
     return false 
    end try 
    return true 
end FinderItemExists 

Ich denke, was Sie fehlt ist die Umwandlung des Wegs zu einem Alias.

6

In Ihrem ursprünglichen Code geben Sie der Funktion exists eine Zeichenfolge statt einer Datei, obwohl es der Pfad zu einer Datei ist. Sie müssen es explizit eine Datei geben, oder es behandelt es das gleiche wie wenn man versucht hatte,

exists "god" 

oder

exists "tooth fairy" 

Der existiert Befehl wird nicht wissen, zu tun, was du redest . Sie könnten

return exists alias "the:path:to:a:file" 

verwenden, aber Aliase funktionieren nicht, wenn die Datei tatsächlich vorhanden ist, so dass eine nicht vorhandene Datei wird einen Fehler erstellen. Sie könnten natürlich den Fehler abfangen und etwas damit machen, aber es ist einfacher, der Funktion exists nur ein Dateiobjekt zu geben. Datei-Objekte gehören zu der Finder-Anwendung, so:

return exists file "the:path:to:a:file" of application "Finder" 

HTH

Verwandte Themen