Estoy usando una acción de carpeta para crear una carpeta "activa", 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 applescript normal y activar la función "agregar elementos de carpeta" con el comando "Elegir carpeta". Así que puedo señalar manualmente una fuente específica y una carpeta de destino y ejecutar el script.
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 del scripting para que puedan interactuar?
¡Gracias!
Patricio
Simplemente elimine el controlador y cambie la variable "estos_elementos" por "esta_carpeta", 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 por completo a su destino.
Si, por el contrario, solo desea que se copien los elementos (no la carpeta), puede 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 vuelve a compilar el script, le 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.
@Patrick de Gier, esta versión alterada del código de @MBUST, 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
Pat78
Pat78
MBUSTO
Pat78
Pat78
MBUSTO
Pat78
Pat78
MBUSTO