Uzyskaj rodzic folderu w AppleScript

3

Piszę trochę AppleScript w przepływie pracy Automatora i muszę pobrać folder nadrzędny obiektu pliku (lub folderu). Poszukałem tego wszystkiego i otrzymałem te same odpowiedzi, które dotyczą właściwości „kontener”, „rodzic” lub „folder”. Jednak żadna z nich nie działa dla mnie, niezależnie od tego, czy są one zapakowane w blok „powiedz” Findera „”.

Tak więc, jeśli spróbuję czegoś takiego:

set a to POSIX file "/usr/local"

tell application "Finder"
    set b to container of a
end tell

display alert a

Pojawia się komunikat o błędzie „Nie można pobrać kontenera pliku” Macintosh HD: usr: local „.” To samo dzieje się z rodzicem i folderem.

Ponadto, jeśli wykonam „wyświetlanie klasy alertu”, otrzymuję „furl”. To jest w edytorze AppleScript. Z drugiej strony, przepływ pracy Automatora z modułem Uruchom Applescript z tekstem

on run {input, parameters}
    repeat with i from 1 to length of input
        set the_file to item i of input
        display alert class of the_file
    end repeat
    return input
end run

wyświetla „1634494835” w oknie alertu. Ale jeśli zamiast tego użyję „klasy powrotnej pliku_pliku” i skorzystam z modułu Wyświetl wyniki, wynik zostanie wyświetlony jako {alias}. Pomimo tych dziwnych oznaczeń klas, mogę używać zwykłego aliasu i właściwości pliku, takich jak „ścieżka POSIX”, z obiektem pliku.

Czy ktoś ma jakiekolwiek pojęcie o tym, co tu się dzieje? Czy moja biblioteka AppleScript jest uszkodzona?

UnnamedMook
źródło
Na czym dokładnie polega problem z drugą częścią twojego pytania? Wydaje się, że zachowuje się zgodnie z przeznaczeniem ...?
Daniel Beck
1
Liczba 1634494835 jest całkowitą reprezentacją 'alis' OSType, co to jest OSType z AppleScript alias klasa jest.
NSGod

Odpowiedzi:

3

Z pomocy biblioteki Standardowe dodatki :

Plik POSIX n: Obiekt pliku określony przez ścieżkę w stylu POSIX (ukośnik).

  • Ścieżka POSIX (tekst, r / o): ścieżka w stylu POSIX (ukośnik) pliku lub obiektu aliasu

Nie ma pojemnik własność.


Czego potrzebujesz Znalazca uważa, że pozycja móc to zrobić. Jeden sposób, aby to uzyskać:

set b to container of (a as alias)
Daniel Beck
źródło