AppleScript: guardare una cartella

2

Ho bisogno di un'applicazione AppleScript sul desktop per guardare una cartella, anche sul desktop, per i file che sono stati spostati su di essa.

Finora, ho:

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

Quando esporto lo script come applicazione, l'ho impostato su: "Resta aperto dopo l'esecuzione del gestore". Quindi apro l'applicazione e la mantengo in esecuzione.

Tuttavia, quando sposto i file nella cartella "Spool", non succede nulla.

Ho provato l'opzione on idle , ma continuava a creare il dialogo dopo il dialogo, piuttosto che farlo quando i file venivano spostati nella cartella.

Qualche idea?

    
posta Wayne Smallman 21.10.2017 - 15:42
fonte

1 risposta

1

Il comando che stai utilizzando, "sull'aggiunta di un elemento di cartella", è specifico per le azioni di cartella, quindi non funzionerà in uno script di azione non a cartella. Sono d'accordo con gli altri sul fatto che l'azione di una cartella è il modo migliore per gestirlo, ma se si vuole davvero farlo senza, è possibile creare un'applicazione di soggiorno aperta che interroga il contenuto della cartella e la confronta con l'ultima volta che è stata eseguita e visualizza i diversi file. Modifica la proprietà runInterval per l'esecuzione alla frequenza preferita.

Nota: per semplicità, l'ho solo scritto per controllare i file aggiunti alla cartella spool. Puoi modificarlo per controllare anche i file rimossi, duplicando la seconda sezione nel codice sottostante e eseguendo il looping di spoolFiles e verificando se si trovano in currentFiles.

Codice AppleScript, come applicazione aperta, di seguito:

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
    
risposta data 24.10.2017 - 20:09
fonte

Leggi altre domande sui tag