2 votos

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

Estoy usando una carpeta acción para crear una "caliente" de la carpeta, que de inmediato los duplicados de los archivos que se encuentran en esta carpeta a una determinada carpeta de copia de seguridad.

Este es el script que estoy usando como carpeta de acción 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 carpeta acción como una normal de applescript y desencadenar la "adición de elementos de la carpeta de" función "seleccionar carpeta" comando. Así que puedo manualmente el punto de origen y de destino de la carpeta y obtener la secuencia de comandos se ejecuta.

He probado este, pero sin 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 de cómo combinar las dos partes de secuencias de comandos para que se puedan interactuar?

Gracias!

Patrick

1voto

MBUST Puntos 43

Acaba de quitar el controlador y el cambio de la variable "these_items" para "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

A continuación, ejecute la secuencia de comandos como un script normal, y se copia en la carpeta enteramente a su destino.

Si, por otro lado, usted sólo desea que los elementos a ser copiado (no la carpeta), podría utilizar 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, usted podría terminar con un duplicado de los contenidos de la carpeta.

Ahora, teniendo en cuenta sus comentarios a continuación, esta versión va a ejecutar el script como una carpeta acción, pero recuerde que su carpeta de destino cuando se declara una propiedad en el comienzo de la secuencia de comandos. Si vuelve a compilar el script, a preguntar de nuevo.

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.

0voto

wch1zpink Puntos 11

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

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X