AppleScript: Oglądanie folderu

2

Potrzebuję aplikacji AppleScript na pulpicie, aby oglądać folder, również na pulpicie, dla plików, które zostały do ​​niego przeniesione.

Do tej pory mam:

global folderSpool
tell application "Finder" to set folderSpool to folder "Spool" of desktop

on adding folder items to folderSpool after receiving the_files
    repeat with each_file in the_files
        set theDialogText to "File is: " & (each_file) & "."
        display dialog theDialogText
    end repeat
end adding folder items to

Kiedy eksportuję skrypt jako aplikację, ustawiam go na: „Pozostań otwarty po uruchomieniu programu obsługi”. Następnie otwieram aplikację i utrzymuję ją w działaniu.

Jednak po przeniesieniu plików do folderu „Spool” nic się nie dzieje.

Wypróbowałem tę on idleopcję, ale nadal tworzyło dialog po dialogu, zamiast robić to po przeniesieniu plików do folderu.

Jakieś pomysły?

Wayne Smallman
źródło
1
Czy jest jakiś powód, dla którego nie możesz po prostu ustawić akcji folderu na folderze docelowym, który chcesz oglądać?
user3439894,
Co najmniej dwa powody: 1. Nie wiem jak; 2. jeśli wiąże się to z tworzeniem dodatkowych elementów i umieszczaniem ich w folderach (co, jak podejrzewam, ma miejsce), to nie jest to praktyczne, biorąc pod uwagę wykorzystanie, które mamy na myśli.
Wayne Smallman
1
Nie sądzę, aby można było oglądać folder ze zwykłej aplikacji AppleScript, a to będzie wymagało skonfigurowania jako akcji folderu. Możesz utworzyć akcję folderu i zastosować ją do folderu docelowego natywnie na dwa różne sposoby, używając przepływu pracy akcji folderu automatora lub używając edytora skryptów i konfiguracji akcji folderu ... z menu kontekstowego Usługi w Finderze. Obie metody zostały pokazane, jak to zrobić tutaj w AD i Internecie. Wyszukaj w AD i / lub Google za pomocą: Działanie folderu lub Ustawienia działania folderu
użytkownik3439894

Odpowiedzi:

1

Polecenie, którego używasz „przy dodawaniu elementu folderu”, jest specyficzne dla akcji folderu, więc nie będzie działać w skrypcie akcji innym niż folder. Zgadzam się z innymi, że akcja folderu jest najlepszym sposobem na poradzenie sobie z tym, ale jeśli naprawdę chcesz to zrobić bez niego, możesz utworzyć otwartą aplikację, która będzie sprawdzać zawartość folderu i porównywać go z ostatnim uruchomieniem i wyświetla różne pliki. Zmień właściwość runInterval, aby działała z preferowaną częstotliwością.

Uwaga: Dla uproszczenia napisałem to tylko w celu sprawdzenia plików dodanych do folderu buforowania. Możesz go ulepszyć, aby sprawdzał również, czy nie ma usuniętych plików, powielając drugą sekcję w poniższym kodzie i przechodząc przez spoolFiles i sprawdzając, czy są one w currentFiles.

Kod AppleScript, jako aplikacja pozostająca otwarta, poniżej:

property spoolFiles : {}
property currentFiles : {}
property runInterval : 5 -- interval is in seconds
global folderSpool

on idle
    tell application "Finder"
        set folderSpool to folder "Spool" of desktop
        if (count of spoolFiles) is 0 then set spoolFiles to name of every file of folderSpool
        set currentFiles to name of every file of folderSpool
    end tell

    set changedFiles to {}--Reverse and repeat this section to check for missing files
    repeat with i from 1 to count of currentFiles
        if currentFiles's item i is not in spoolFiles then
            set changedFiles's end to currentFiles's item i
        end if
    end repeat

    repeat with each_file in changedFiles
        set theDialogText to "File is: " & (each_file) & "."
        display dialog theDialogText
    end repeat
    set spoolFiles to currentFiles --important to update the spoolFiles so only new files will get displayed going forward.
    return runInterval
end idle
Hurston
źródło