Cómo combinar la función “Elegir comando de carpeta” con “agregar elementos de carpeta” con Applescript

2

Estoy usando una acción de carpeta para crear una carpeta "caliente", que duplica inmediatamente los archivos colocados en esta carpeta en una carpeta de respaldo específica.

Este es el script que estoy usando como acción de carpeta y funciona bien:

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

Pero quiero ejecutar esta acción de carpeta como un applecript normal y activar la función "agregar elementos de carpeta" con un comando "Elegir carpeta". Por lo tanto, puedo señalar manualmente una carpeta de origen y destino específica y hacer que el script se ejecute.

Intenté esto, pero ningún resultado:

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

¿Alguna sugerencia sobre cómo combinar las dos partes de las secuencias de comandos para que puedan interactuar?

¡Gracias!

Patrick

    
pregunta Pat78 19.06.2018 - 21:45

2 respuestas

1

Simplemente elimine el controlador y cambie la variable "these_items" por "this_folder", así:

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

Luego ejecute el script como un script normal, y copiará la carpeta completamente a su destino.

Si, por otro lado, solo quieres que se copien los elementos (no en la carpeta), puedes usar esta variación:

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

De cualquier manera, terminaría con un duplicado del contenido de la carpeta.

Ahora, dados sus comentarios a continuación, esta versión ejecutará el script como una acción de carpeta, pero recordará su carpeta de destino cuando declare una propiedad al comienzo del script. Si recompilas el script, te preguntará otra vez.

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

Espero que esto ayude.

    
respondido por el MBUST 20.06.2018 - 16:45
0

@Patrick de Gier, esta versión modificada del código de @MBUST, le permite al usuario elegir una carpeta de destino cada vez

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
    
respondido por el wch1zpink 22.06.2018 - 05:26

Lea otras preguntas en las etiquetas