2 votos

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

He investigado mucho y no encuentro una solución sencilla para renombrar un archivo por su carpeta padre.

Básicamente estoy comprimiendo un montón de archivos desde un gestor de archivos online y los recibo en una estructura ridícula. (ver abajo) la primera columna es la carpeta padre extraída que se nombra a sí misma como la última carpeta del conjunto cuando la comprimí. La segunda columna son los números de pedido reales de cada pedido. La tercera columna es lo que parece ser carpetas con nombres aleatorios que contienen cada uno un archivo subido por el cliente. Así, cada archivo que un cliente sube para un pedido se pone en una carpeta con nombre aleatorio, y luego en la carpeta con el número de pedido.

current structure

Me gustaría hacer una aplicación o servicio con Apple Automator para renombrar los archivos de los clientes así (y deshacerse de todas las subcarpetas) dejándolos todos en la carpeta padre nombrados secuencialmente.

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

¿alguna ayuda/opinión?

3voto

Seif Puntos 121

Puede hacerlo con un AppleScript. Utiliza el editor script de la carpeta Utilidades. Aquí tienes un script que he escrito para ti ahora mismo. Funciona en una carpeta a la vez - no la carpeta de nivel superior, pero 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 harías clic en "Elegir". Muy importante: no elijas la 3589919. Sólo estamos trabajando en una carpeta a la vez aquí. Si esto funciona para usted, podemos ampliar a un bucle a través de 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. Deberías practicar con un conjunto de carpetas que no tengan importancia 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 aquí es lo que deberían ser:

Imagen 1: Servicio Automator, con AppleScript ligeramente modificado.

Imagen 2: la carpeta_1, la carpeta_2, la carpeta_3, la carpeta_4 y la carpeta_5 tienen cada una un solo pdf. Aquí sólo se muestra el contenido de la carpeta_1.

Imagen 3: Este es el resultado. Las subcarpetas han desaparecido. Los archivos tienen el mismo nombre que 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 imagen pero soy nuevo aquí y sólo se me permiten dos imágenes hasta que me actualicen.

Si quieres hacerlo con un servicio, usas casi el mismo script, pero tienes que pasar la carpeta control-clic. En lugar de usar el paso de AppleScript "Elegir carpeta", le dices a tu servicio de Automator que "reciba la carpeta seleccionada en el Finder" y pones "la_carpeta" como elemento 1 de la entrada. Vea la primera imagen. ¡Funciona como un campeón aquí!

Automator Service, passing the control-clicked folder

folder_1, folder_2, folder_3, folder_4, and folder_5 each have a single pdf in them. Only folder_1's contents are shown here

This is the result. The subfolders are gone. The files are named after the parent folder.

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X