AppleScript / Automator para ordenar los archivos según el nombre del archivo

1

Quiero seleccionar una carpeta de películas de QuickTime y copiar cada una de ellas en subcarpetas separadas, dependiendo del nombre del archivo (al copiar no mover).

Tengo una carpeta que quiero contener subcarpetas llamadas XA y XB, pero solo quiero que se copien en las versiones h264.

Los nombres de los archivos de ejemplo son los siguientes:

XA0000_v001_h264.mov
XA0000_v001.mov
XB0010_v002_h264.mov
XB0010_v002.mov

¿Cuál sería una forma eficiente de codificar esto?

    
pregunta James Yeoman 22.07.2018 - 21:38

2 respuestas

2

Disculpas por adelantado si solo quisieras un script. Habría comentado, pero tengo 5 repeticiones cortas. Esto no es un Applecript / Automator, pero aún podría ayudar.

Puede usar Buscar cualquier archivo . Descripción del sitio web:

  

Find Any File es un programa para Mac OS X de Apple que te permite buscar   para archivos en tus discos.

     
  • Al contrario de Spotlight, no utiliza una base de datos, sino que utiliza las operaciones de búsqueda rápida del controlador del sistema de archivos, cuando están disponibles. Esto le permite buscar propiedades de archivos como el nombre, las fechas, el tamaño, etc., pero no el contenido del archivo (¡eso es en lo que Spotlight es mejor!), A menos que desee buscar solo texto sin formato).
  •   
  • Buscar cualquier archivo puede encontrar archivos que Spotlight no, por ejemplo. Aquellos dentro de paquetes y paquetes y dentro de carpetas que normalmente son   excluido de la búsqueda de Spotlight.
  •   
  • Finalmente, es bastante rápido. Una búsqueda solo toma unos segundos en un disco duro interno o SSD. ¡Pruébalo tú mismo!
  •   

Básicamente, es como " Everything " para mac. Pero lo que podría hacer es buscar cualquier archivo que termine con "_h264.mov" dentro de la carpeta (cualquier carpeta que desee). Si desea automatizar, supongo que podría hacer un script de GUI para encontrar cualquier archivo, pero podría Encuentra otra solución.

Imagen de ejemplo:

    
respondido por el Talos Potential 22.07.2018 - 22:41
1

Este es un AppleScript que puedes usar. Puede guardarlo como una aplicación, luego soltar la carpeta que contiene su archivo o ejecutar el script y seleccionar esa carpeta cuando se le solicite. Copia los archivos con "h264" en sus nombres a la Subcarpeta XA, y mueve los archivos sin "h264" en sus nombres a la Subcarpeta XB. Los archivos originales que tienen "h264" en sus nombres no se mueven, por lo que tendrá dos de cada uno, uno en la carpeta original y otro en la carpeta Sub Carpeta XA.

property done_foldername : "Sub Folder XA"
property originals_foldername : "Sub Folder XB"
property extension_list : {"mov"}

on open these_items
    my build_distribution(these_items's item 1)
end open

on build_distribution(this_item)
    set this_folder to this_item as string
    set done_FolderPath to this_folder & done_foldername
    set originals_FolderPath to this_folder & originals_foldername
    tell application "Finder"
        if not (exists folder done_FolderPath) then
            make new folder at this_folder with properties {name:done_foldername}
        end if
        if not (exists folder originals_FolderPath) then
            make new folder at this_folder with properties {name:originals_foldername}
            set current view of container window of folder this_folder to list view
        end if
        set the originals_folder to originals_FolderPath as alias
        set these_items to (every file of entire contents of folder this_folder as list)
    end tell
    try
        repeat with i from 1 to number of items in these_items
            set this_item to (item i of these_items) as alias
            set the item_info to the info for this_item
            if (alias of the item_info is false and the name extension of the item_info is in the extension_list) then
                if the displayed name of item_info contains "h264" then
                    set copy_Me to "1"
                else
                    set copy_Me to "0"
                end if
                try
                    tell application "Finder"
                        if copy_Me = "1" then
                            duplicate this_item to folder done_FolderPath
                        else
                            move this_item to folder originals_folder with replacing
                        end if
                    end tell
                on error the error_message number the error_number
                    display dialog "Error: " & the error_number & ". " & the error_message buttons {"OK"} default button 1
                end try

            end if
        end repeat
    on error error_message number error_number
        if the error_number is not -128 then
            tell application "Finder"
                activate
                display dialog error_message buttons {"Cancel"} default button 1 giving up after 120
            end tell
        end if
    end try
end build_distribution

on run
    set this_item to (choose folder)
    my build_distribution(this_item)
end run
    
respondido por el Trellis 28.07.2018 - 06:06

Lea otras preguntas en las etiquetas