Automator: servicio para mover archivos a nuevas subcarpetas según la extensión de archivo * dentro de cualquier carpeta seleccionada *

2

He estado buscando durante bastante tiempo pero parece que no puedo encontrar instrucciones relevantes para esta tarea en particular. Soy nuevo en esto, así que pido disculpas si me falta algo básico.

Como muchos fotógrafos, vuelvo de una sesión fotográfica con una tarjeta que contiene archivos RAW (CR2), JPG y MOV, todo en una sola carpeta. Una vez que copie esta carpeta en mi disco duro, debo realizar las siguientes acciones, para las que me gustaría crear un solo servicio, de modo que pueda ejecutar este mismo proceso para cualquier carpeta que elija.

Así que esto es lo que me gustaría automatizar:

  1. Cree carpetas separadas para Raw, JPG y Video dentro de la carpeta seleccionada.
  2. Identifique los archivos de cada tipo y muévalos a las carpetas creadas en el primer paso.

Pensé que esto sería simple, pero el problema parece estar en mi necesidad de que sea un servicio genérico, no vinculado a ninguna ruta de carpeta específica. Necesito que sea repetible para otras carpetas, pero parece que no puedo entender ese aspecto esencial de la versatilidad.

Ya encontré y adapté un Apple Script (ver más abajo) que crea las subcarpetas que necesito. Esa parte funciona bien como un servicio por sí solo. Pero parece que no puedo realizar el segundo paso que haría el movimiento real del archivo.

Sé cómo mover archivos de un determinado tipo a una carpeta específica , pero eso no es lo que necesito. Necesito que todos los JPG en una carpeta determinada se muevan a una nueva subcarpeta llamada JPG dentro de la carpeta seleccionada y de la misma manera para los otros tipos de archivos. Entiendo cómo filtrar esos tipos de archivos, pero hasta ahora no puedo entender cómo moverlos a una carpeta sin tener que especificar una ruta, no sé cómo apuntar a carpetas que aún no existen. Incluso si pudiera, esas rutas serán diferentes para cada carpeta en la que necesito trabajar.

¿Puede alguien dar consejos o indicarme una discusión relevante?

Muchas, muchas gracias.

///

Aquí está el Apple Script para el servicio de creación de mi subcarpeta:

Textodelscript:

onrun{input,parameters}setoutputto{}tellapplication"Finder"
        set {source_folder, source_name} to {it, name} of first item of input
        repeat with prefix in {"JPG - ", "RAW - ", "Edits - ", "Video - "}
            make new folder at source_folder with properties {name:contents of prefix & source_name}
            set end of output to result as alias
        end repeat

Nota: La parte de la automatización que mueve archivos no involucrará a mi carpeta "Ediciones -". Esto es solo un contenedor para futuros archivos.

    
pregunta David 27.09.2018 - 09:43

2 respuestas

2

Si quisiera crear varias carpetas dentro de una carpeta seleccionada y mover los archivos existentes dentro de la carpeta seleccionada, a las carpetas creadas dentro de la carpeta seleccionada, según la extensión del archivo, entonces usaría bash no AppleScript .

El siguiente Servicio toma las carpetas seleccionadas en Finder y hace lo siguiente:

  • Crea las siguientes carpetas dentro de la carpeta seleccionada donde "$ parent_folder_name" es el nombre de la carpeta seleccionada en la que se ejecuta el servicio:
    • "Ediciones - $ parent_folder_name"
    • "JPG - $ parent_folder_name"
    • "RAW - $ parent_folder_name"
    • "Video - $ parent_folder_name"
  • Mueve los archivos existentes a la base de carpetas recién creadas en la extensión de archivo.
for f in "$@"; do
    cd "$f"
    d="$(basename "$f")"
    mkdir -p "Edits - $d" "JPG - $d" "Raw - $d" "Video - $d"
    mv *.JPG "./JPG - $d"
    mv *.CR2 "./RAW - $d"
    mv *.MOV "./Video - $d"
done

    
respondido por el user3439894 27.09.2018 - 14:54
3

Supuse que seleccionará las carpetas actual para pasarlas a su flujo de trabajo del servicio Automator , por ejemplo, el derecho contextual -haga clic en el menú de servicios.

Teniendo en cuenta esto, a continuación se muestra el flujo de trabajo de su servicio:

AquíestáelscriptqueseincluyeenlaacciónRunAppleScript:

onruninputset[input]totheinputrepeatwithdirectoryintheinputorganiseFilesOfFolder_(POSIXpathofthedirectory)endrepeatendruntoorganiseFilesOfFolder:flocalfscriptSourceFolderusesys:application"System Events"

        property location : a reference to folder f of sys
        property name : (a reference to name of my location)

        script JPGs
            property folder : missing value
            property name extension : "jpg"
            property list : {}
            property id : "JPG"
        end script

        script RAWfiles
            property folder : missing value
            property name extension : "cr2"
            property list : {}
            property id : "RAW"
        end script

        script Videos
            property folder : missing value
            property name extension : "mov"
            property list : {}
            property id : "Video"
        end script

        script Edits
            property folder : missing value
            property id : "Edits"
        end script


        to make new "folder" given type:fileType
            [fileType's id, " - ", my name's contents]

            make new folder at my location ¬
                with properties {name:¬
                contents of result as text}

            set the folder of the fileType to the result
        end make

        on listOf:fileItems
            set the list of fileItems to (every file ¬
                of my location where its name extension ¬
                is the name extension of the fileItems)
        end listOf:
    end script

    tell the SourceFolder
        repeat with fileType in its [JPGs, RAWfiles, Videos, Edits]
            make new "folder" given type class:fileType
            if the contents of the fileType = its Edits then ¬
                exit repeat

            if (its listOf:fileType) is not {} then ¬
                tell application "System Events" to move ¬
                    list of fileType to the ¬
                    folder of the fileType
        end repeat
    end tell
end organiseFilesOfFolder:
    
respondido por el CJK 27.09.2018 - 15:05

Lea otras preguntas en las etiquetas