2016-07-24 15 views
1

Frequency AppleScript Benutzer hier, so dass dies etwas unglaublich einfach sein kann, aber ich kann nicht scheinen, um ein sehr einfaches Skript zu erstellen, eine neue Alias-Datei arbeiten. Hier ist das Skript in seiner Gesamtheit:Make Alias-Skript Fehler

Ich habe es mit und ohne die "neue" versucht. Ich habe es mit "POSIX-Datei" vor den Dateinamen und mit "als POSIX-Datei" als Zwang nach den Dateinamen versucht. Ich habe es mit "at * to *" und "to * at *" versucht. Für den Fall, dass das Ziel ein Ordner sein muss, den ich habe, habe ich das versucht. Absolut alle Varianten erzeugen die gleiche Fehlermeldung:

execution error: Finder got an error: AppleEvent handler failed. (-10000) 

was mir nicht viel sagt.

Ich habe offensichtlich die tatsächlichen Dateipfade durch "/ Pfad/zu /" hier ersetzt, aber ich kann versichern, dass ls /path/to/test.txt bestätigt, dass der Quellpfad gültig ist, und ls "/path/to/test.txt alias" bestätigt, dass der Zielpfad nicht existiert.

Falls es darauf ankommt, verwende ich Mac OS X 10.11.5. Der Finder.sdef Eintrag für Make sieht sicher wie sollte es tun, was ich will:

make v : Make a new element make 

new type : the class of the new element 

at location specifier : the location at which to insert the element 

[to specifier] : when creating an alias file, the original 
    item to create an alias to or when creating a file viewer window, 
    the target of the window 

[with properties record] : the initial values for the properties of 
    the element → specifier : to the new object(s) 

Was wirklich tun möchte, ich ausgeführt dies mit osascript von der Kommandozeile und was ich wirklich, wirklich wollen Zu tun ist, den Osascript-Einzeiler aus Python aufzurufen, so dass die Dateipfade inline statt in Variablen sind. Aber ich zog zuerst in die Befehlszeile und dann in den Skript-Editor, da ich es nicht zum Laufen bringen konnte, und jede einzelne Methode, dieses Code-Snippet aufzurufen, erzeugt die gleiche Fehlermeldung. Hoffentlich, wenn ich ein Skript zum Laufen bekomme, kann ich entsprechenden Code von oscript aus Python aufrufen. :}

Antwort

2

Sie waren definitiv auf dem richtigen Weg mit POSIX file seit AppleScript represents file paths differently than POSIX does (im Wesentlichen Doppelpunkt anstelle von Schrägstrichen).

Sie könnten alle Pfade manuell in AppleScript-Pfade übersetzen, aber das Umwandeln ist meiner Meinung nach eine bessere Lösung, um die Dateipfade lesbar zu halten (und Ihnen den Quellcode klar zu machen, dass sie tatsächlich Datei sind) Wege).

Das Problem mit POSIX file ist jedoch, dass es einen Dateiverweis anstelle des Textpfads zurückgibt, den der Befehl make new alias sucht. Um dies zu beheben, alles, was Sie tun müssen, ist die zurückgegebene Dateireferenz als text wirft alias glücklich zu machen:

set source_file to (POSIX file "/path/to/test.txt") as text 
set alias_file to (POSIX file "/path/to/test.txt alias") as text 
tell application "Finder" to make new alias at alias_file to source_file 

Es gibt ein weiteres Problem, aber: der make new alias at x to y Befehl y erwartet ein Pfad zu einer Datei zu sein und x ein Pfad zu einem Verzeichnis sein, in dem der Alias ​​platziert werden soll, aber Sie geben einen Pfad an eine Datei für x und y weiter. Der Zielpfad ("at") sollte nur lauten - der make new alias Befehl wird automatisch den Alias ​​{original filename} alias nennen. Also, in Summe:

set source_file to (POSIX file "/path/to/test.txt") as text 
set alias_dir to (POSIX file "/path/to/") as text 
tell application "Finder" to make new alias at alias_dir to source_file 

Das mag ein wenig langatmig gewesen sein, aber ich hoffe es hilft!

+1

Es hat enorm geholfen. Sowohl die Lösung als auch die Gründe dafür. Vielen Dank! – larryy

+0

@larryy Großartig! Froh, dass ich helfen konnte. – AstroCB

+1

Korrekturen: 1. Doppelpunkt-getrennte HFS-Pfade sind ein alter Pre-OSX-Kater.AS unterstützt diese für Abwärtskompatibilität (und cos AS-Devs sind faul) und unterstützt auch Standard-POSIX-Pfade. 2. Der Finder erwartet _object specifiers_ (zB 'file" test.txt "des Ordners" Documents of home "), akzeptiert aber in den meisten Fällen HFS-Pfadzeichenfolgen (Finder ist auch ein alter Pre-OSX-Kater) oder' alias'/'POSIX-Datei'-Spezifizierer und konvertieren sie; 'get' und' set' sind Ausnahmen. 3. HFS-Pfade sind grundsätzlich fehlerhaft - sie können nicht zwischen identisch benannten Volumes unterscheiden. Verwenden Sie daher immer möglichst POSIX-Pfade. – foo