Pregunta de Apple para copiar archivos

2

Escribí una secuencia de comandos 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 script de manzana con cáscara bajo una acción de automatización.

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

Aquí está el guión que he escrito. No sé por qué se está estrellando. 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
    
pregunta TWR 06.09.2014 - 14:10

1 respuesta

1

He probado copiando archivos y carpetas con un valor de 8.95GB y obtienes un tiempo de espera.

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

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

Me doy cuenta:

  • tienes dos bloques de tell para el buscador donde solo necesitas uno.

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

  • El código de creación de su carpeta no tiene comprobación de nombres existentes. Esto también significa que habrá un error si el usuario utiliza un nombre existente.

  • Ya que no pueden crear carpetas de destino con el mismo nombre, nunca habrá un archivo / carpeta que exista en el mismo nombre. Por lo tanto, no hay ninguna razón real para verificar si un artículo ya existe. Y dicho esto, debería poder eliminar el bloque de repetición y la comprobación de existencia y simplemente usar (con 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 resultará en una acción de copia única en el buscador en lugar de posiblemente 10s-1000s de acciones individuales.

Para la respuesta predeterminada de tu fecha, puedes 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 te dará un diálogo actualizado como este.

    
respondido por el markhunte 07.09.2014 - 12:02

Lea otras preguntas en las etiquetas