¿Cómo automatizar el cambio de nombre de un archivo en función de su carpeta principal?

2

He investigado mucho y no puedo encontrar una solución simple para cambiar el nombre de un archivo por su carpeta principal.

Básicamente, estoy comprimiendo un montón de archivos de un administrador de archivos en línea y los recibo en una estructura ridícula. (ver más abajo) la primera columna es la carpeta principal extraída que se nombra a sí misma después de la última carpeta del conjunto cuando la comprimo. La segunda columna son los números de orden reales para cada orden. La tercera columna es lo que parecen ser carpetas con nombres aleatorios, cada una de las cuales contiene UN archivo cargado por el cliente. Por lo tanto, cada archivo que un cliente carga para un pedido se coloca en una carpeta con nombre aleatorio, luego en la carpeta del número de pedido.

Me gustaría crear una aplicación o servicio con Apple Automator para cambiar el nombre de los archivos del cliente de esta manera (y deshacerme de todas las subcarpetas) dejándolos todos en la carpeta principal denominada de forma secuencial.

3587915_1.PDF
3587915_2.PDF
3587915_3.PDF
3587915_4.PDF
3587933_1.PDF
3587933_2.PDF

¿Alguna ayuda / conocimiento?

    
pregunta Becky Piscitelli 06.04.2016 - 23:38

1 respuesta

3

Puedes hacer esto con un AppleScript. Utilice el Editor de secuencias de comandos en la carpeta Utilidades. Aquí hay un guión que escribí para ti ahora mismo. Funciona en una carpeta a la vez, no en la carpeta de nivel superior, sino en la de su ejemplo, que es 3587915.

Cuando ejecutas este script, te pide que elijas una carpeta. En este ejemplo, abrirías 3587915 y luego hacer clic en "Elegir". Muy importante: no elijas tu 3589919. Aquí solo trabajamos en una carpeta a la vez. Si esto funciona para usted, podemos expandirnos para recorrer en bucle las carpetas en la carpeta de nivel superior.

tell application "Finder"
    set the_folder to choose folder
    set the_folder_name to name of the_folder
    set the_subfolders to every folder in the_folder
    repeat with I from 1 to count of the_subfolders
        set name of every file of item I of the_subfolders to the_folder_name & "_" & I & ".pdf"
        move every file of item I of the_subfolders to the_folder
    end repeat
    --
    -- optionally delete the subfolders
    delete every folder in the_folder -- put two dashes in front of this line to comment it out
end tell

Aquí hay capturas de pantalla que muestran cómo funciona. Debes practicar en un conjunto de carpetas que no importan al principio. Puedes ver mi configuración inicial en la primera imagen y el resultado en la segunda. Los títulos de las imágenes no se muestran (para mí), así que esto es lo que deberían ser:

Imagen 1: Servicio Automator, con AppleScript ligeramente modificado.

Imagen 2: folder_1, folder_2, folder_3, folder_4, y folder_5 tienen un solo pdf. Aquí solo se muestran los contenidos de folder_1.

Imagen 3: Este es el resultado. Las subcarpetas se han ido. Los archivos llevan el nombre de la carpeta principal.

Puedes guardar el script como una aplicación. O bien, puede ejecutar el script dentro de un paso en Automator, ya que Automator puede ejecutar un AppleScript. Eso está en la sección de Utilidades de Automator, "Ejecutar AppleScript". Incluiría una foto, pero soy nueva aquí y solo se me permiten dos fotos hasta que me actualicen.

Si quieres hacerlo con un servicio, usas casi la misma secuencia de comandos, pero debes pasar la carpeta presionada con el control. En lugar de usar el paso de AppleScript "Elegir carpeta", le dice a su Servicio de Automatización que "reciba la carpeta seleccionada en el Finder" y que configure "la_carpeta_" en el elemento 1 de la entrada. Vea la primera imagen. ¡Funciona como un campeón aquí!

    
respondido por el Christian Boyce 07.04.2016 - 17:38

Lea otras preguntas en las etiquetas