Come combinare la funzione "Scegli comando cartella" con "aggiungi elementi cartella" con Applescript

2

Sto usando un'azione di cartella per creare una cartella "hot", che duplica immediatamente i file posizionati in questa cartella in una cartella di backup specifica.

Questo è lo script che sto usando come azione cartella e funziona perfettamente:

on adding folder items to this_folder after receiving these_items
   tell application "Finder" to duplicate these_items to folder 
   ("Macintosh HD:Users:photograper:Desktop:Target:")
end adding folder items to

Ma voglio eseguire questa azione della cartella come un normale applecript e attivare la funzione "aggiungi elementi cartella" con il comando "Scegli cartella". Quindi posso puntare manualmente una specifica cartella di origine e destinazione e avviare lo script.

Ho provato questo, ma nessun risultato:

set this_folder to choose folder with prompt "Select source folder:" 
with multiple selections allowed
set target_folder to choose folder with prompt "Select backup folder:"


on adding folder items to this_folder after receiving these_items
   tell application "Finder" to duplicate these_items to target_folder
end adding folder items to

Qualche suggerimento su come combinare insieme le due parti dello scripting in modo che possano interagire?

Grazie!

Patrick

    
posta Pat78 19.06.2018 - 21:45
fonte

2 risposte

1

Rimuovi il gestore e modifica la variabile "this_items" per "this_folder", in questo modo:

set this_folder to choose folder with prompt "Select source folder:" with multiple selections allowed
set target_folder to choose folder with prompt "Select backup folder:"

tell application "Finder" to duplicate this_folder to target_folder

Quindi esegui lo script come uno script normale e copierà la cartella interamente a destinazione.

Se, al contrario, desideri solo che gli elementi siano copiati (non la cartella), potresti utilizzare questa variante:

set this_folder to choose folder with prompt "Select source folder:" with multiple selections allowed
set target_folder to choose folder with prompt "Select backup folder:"

tell application "Finder"
    set these_items to list folder of this_folder without invisibles
    repeat with i from 1 to count of these_items
        set ItemX to item i of these_items
        set ItemX to (this_folder & ItemX as string) as alias
        duplicate ItemX to target_folder
    end repeat
end tell

In ogni caso, si finirebbe con un duplicato dei contenuti della cartella.

Ora, dati i tuoi commenti qui sotto, questa versione eseguirà lo script come azione della cartella, ma ricorderà la tua cartella di destinazione quando dichiarerai una proprietà all'inizio dello script. Se ricompilerai lo script, te lo chiederà di nuovo.

property target_folder : ""

on adding folder items to this_folder after receiving these_items
    if target_folder = "" then
        set target_folder to ¬
            choose folder with prompt "Select source folder:" with multiple selections allowed
    else
        try
            --if the script has a property that has been deleted (i.e., the destination folder), it will cause 
            --an error that resolves by asking for a new folder
            set target_folder to target_folder as alias
        on error
            set target_folder to ¬
                ¬
                    choose folder with prompt "Select source folder:" with multiple selections allowed
        end try
    end if
    tell application "Finder" to duplicate these_items to folder target_folder
end adding folder items to

Spero che questo aiuti.

    
risposta data 20.06.2018 - 16:45
fonte
0

@Patrick de Gier, questa versione modificata del codice di @MBUST, consente all'utente di scegliere una cartella di destinazione ogni volta

on adding folder items to this_folder after receiving these_items
    set target_folder to choose folder with prompt "SELECT TARGET FOLDER:" with multiple selections allowed
    tell application "Finder" to duplicate these_items to folder target_folder
end adding folder items to
    
risposta data 22.06.2018 - 05:26
fonte

Leggi altre domande sui tag