Pregunta de Applescript para copiar archivos

Escribí un script para copiar archivos de una tarjeta SD a un disco duro Thunderbolt.

Quería que la acción hiciera todo esto automáticamente en un solo applescript bajo una acción de Automator.

Cuando ejecuto este applescript, parece funcionar, pero ahora los usuarios me informan que reciben errores al copiar archivos grandes (5-8 GB).

Aquí está el guión que he escrito. No sé por qué está fallando. ¿Tal vez un error de tiempo de espera?

on run {input, parameters}

    tell application "Finder"
        set FolderName to text returned of (display dialog "Please enter Today's Date: mmddyyyy-(alphaVariable if more than one card today)" default answer "e.g.03161980-A")
        set loc to disk "WorldRace Storyteller"
        set newfoldername to FolderName
        set newfo to make new folder at loc with properties {name:newfoldername}
        set loc2 to newfo

    end tell

    tell application "Finder"
        set the_files to disk "BMPCC"
        set target_folder to loc2
        repeat with this_file in the_files
            if (not (exists file (this_file's name) of target_folder)) then
                duplicate this_file to target_folder
            end if
        end repeat
    end tell

    return input

end run
¿Sería útil saber qué dicen realmente los errores? También ¿Cuáles son las acciones de Automator que se utilizan con el script?
Dice que la acción "ejecutar applescript" encontró un error. Verifique las propiedades de las acciones e intente ejecutar el flujo de trabajo nuevamente"
Las únicas acciones para las que estoy usando Automator son mostrar cuadros de diálogo de confirmación. Puede ser útil saber que con archivos más pequeños, ¡funciona perfectamente!
archivo grande individual o archivos en su conjunto = 5-8GB

Respuestas (1)

Probé copiando 8,95 GB de archivos y carpetas y obtienes un tiempo de espera.

Lo mejor que puede intentar es agregar una cláusula de tiempo de espera al código. Cuando hice esto, funcionó bien. Le di al guión 30 minutos.

No tengo tarjetas SD, así que en mis pruebas tuve que cambiar el código para adaptarlo a mi configuración.

me doy cuenta:

  • tiene dos bloques de indicadores para el buscador donde solo necesita uno.

  • dado que no está utilizando el controlador de ejecución y la entrada de retorno, no la necesita en el código.

  • Su código de creación de carpetas no tiene verificación de nombres existentes. Esto también significa que habrá un error si el usuario usa un nombre existente.

  • Dado que no pueden crear carpetas de destino con el mismo nombre, nunca existirá un archivo/carpeta con el mismo nombre. Por lo tanto, no hay una razón real para verificar si un elemento ya existe. Y dicho eso, debería poder eliminar el bloque de repetición y verificar que existe y simplemente usar (con el código de tiempo de espera):

.

 with timeout of 1800 seconds --30mins

              duplicate items of the_files to target_folder

 end timeout

Esto también dará como resultado una sola acción de copia en el buscador en lugar de posiblemente 10-1000 de acciones individuales.

Para su respuesta predeterminada de fecha, puede usar:

set theDate to do shell script "date +%d%m%Y-"
tell application "Finder"
    set FolderName to (text returned of (display dialog "Please enter Today's Date: mmddyyyy-(alphaVariable if more than one card today." & return & "e.g. " & (theDate & "B") default answer (theDate & "A")))

....

Esto le dará un diálogo fechado actual como este.

ingrese la descripción de la imagen aquí