Eliminar el nombre de la carpeta del nombre del archivo según el Apple Script existente

así que aquí tengo este script de Apple que usé para insertar el nombre de la carpeta al frente de todos los archivos en la carpeta. El script puede ejecutarse en todas las carpetas y apuntar a todos los archivos y demostró ser muy útil.

    set the_folder to (choose folder)
renamefilesinside(the_folder)

on renamefilesinside(next_folder)
    tell application "Finder"
        set folder_name to name of next_folder & " "
        set folder_contents to every item of next_folder
        repeat with each_item in folder_contents
            if kind of each_item is "folder" then
                my renamefilesinside(each_item)
            else
                set name of each_item to folder_name & " " & name of each_item
            end if
        end repeat
    end tell
end renamefilesinside

Fuente: https://discusiones.apple.com/thread/275167

Sin embargo, ahora eliminé una parte de los nombres de las carpetas y me gustaría que se aplicara un efecto sustractivo a los archivos, por lo que el script tomará los archivos, mirará el nombre de la carpeta principal y eliminará los caracteres compartidos.

Desafortunadamente, sé muy poco sobre los scripts de Apple, así que espero que este sea un ajuste fácil que alguien aquí pueda hacer.

¡Gracias por cualquier ayuda que usted puede dar!

Respuestas (1)

Puede obtener el nombre del archivo, luego establecer el delimitador del elemento de texto en el nombre de la carpeta que lo contiene, luego colocar los elementos de texto del nombre del archivo en una lista, que ignorará el delimitador (el nombre de la carpeta), luego restablecer el delimitador del elemento de texto a "" vacío y forzar el nombre a una cadena. Este es un truco de Applescript MUY común.

set the_folder to (choose folder)
renamefilesinside(the_folder)

on renamefilesinside(next_folder)
    tell application "Finder"
        set folder_name to name of next_folder
        set folder_contents to every item of next_folder
        repeat with each_item in folder_contents
            if kind of each_item is "folder" then
                my renamefilesinside(each_item)
            else
                set n to name of each_item
                set AppleScript's text item delimiters to folder_name
                set n to text items of n
                set AppleScript's text item delimiters to ""
                set n to n as string
                set name of each_item to n
            end if
        end repeat
    end tell
end renamefilesinside
Lo siento, no estoy siguiendo exactamente lo que necesito hacer con el guión. Esperaba que la secuencia de comandos funcionara de manera muy similar a la inicial: simplemente seleccione la carpeta que contiene todas las carpetas (tengo varias) y los archivos dentro de esas carpetas se renombrarán restando el nombre de la carpeta del nombre del archivo.
Hubo algunos errores en el guión en situaciones potenciales. He editado el guión para mejorarlo. Lo lamento. Ahora funciona como dijiste. Selecciona una carpeta una vez que ejecuta el script, y luego eliminará la cadena de nombre de la carpeta de cualquiera de los archivos contenidos en esa carpeta.