5 votos

Apple script para cambiar los nombres de los archivos

¿Puede alguien ayudarme con el siguiente problema? Me gustaría tener un AppleScript que renombrara archivos como estos eliminando los números iniciales y el guión bajo.

Así que nombres de archivos como estos:

5111632_El Secreto_ Atrévete a soñar.mp4 5099299_Invasión de los ladrones de cuerpos 1.mp4 5099287_Instinto Básico.mp4 5099283_Antes de dormirme.mp4

se convertiría en:

El secreto_ Atrévete a soñar.mp4 Invasión de los ladrones de cuerpos 1.mp4 Instinto Básico.mp4 Antes de Dormir.mp4

Voy a ejecutarlo en una carpeta usando Hazel.

2voto

Wowfunhappy Puntos 33

La forma nativa de Applescript para renombrar archivos es:

tell application "Finder"
    set theFile to (choose file)
    set name of theFile to "Yay"
end tell

Si quieres renombrar todos los archivos de una carpeta, pondría los archivos en una lista y usaría un Repeat bloque en cada uno de ellos:

tell application "Finder"
    set theFolder to (choose folder)
    set folderContents to every item of theFolder
    repeat with theFile in folderContents
        set name of theFile to "Yay"
    end repeat
end tell

(Este código no funcionará del todo porque no puedes tener dos archivos con el nombre "Yay", pero el primero sí se renombra, y ya te haces una idea).

Esto se acerca más a lo que quieres hacer, pero no estamos del todo ahí: quieres obtener el nombre del archivo actual, hacer algunos cambios en él y guardar el nuevo nombre.

Hay una subrutina que encontré hace años en alguna parte (ahora no encuentro la fuente) que obtendrá todo lo que esté a la derecha de un determinado carácter, como un guión bajo. Esto hace que sea fácil hacer exactamente lo que quieres. El código completo y final es:

tell application "Finder"
    set theFolder to (choose folder)
    set folderContents to every item of theFolder
    repeat with theFile in folderContents
        set oldName to name of theFile
        set newName to my rightString(oldName, "_")
        set name of theFile to newName
    end repeat
end tell

on rightString(str, del)
    local str, del, oldTIDs
    set oldTIDs to AppleScript's text item delimiters
    try
        set str to str as string
        if str does not contain del then return str
        set AppleScript's text item delimiters to del
        set str to str's text items 2 thru -1 as string
        set AppleScript's text item delimiters to oldTIDs
        return str
    on error eMsg number eNum
        set AppleScript's text item delimiters to oldTIDs
        error "Can't rightString: " & eMsg number eNum
    end try
end rightString

1voto

wch1zpink Puntos 11

No sé nada de Hazel. Sin embargo, el siguiente código AppleScript eliminará todo lo que esté a la izquierda e incluya el primer "_" de los nombres de los archivos seleccionados en el Finder y renombrará los archivos seleccionados en consecuencia.

tell application "Finder"
    set theFiles to (get selection)
    repeat with i from 1 to count of theFiles
        set thisFile to item i of theFiles
        set thisName to name of thisFile
        tell current application
            set theOffset to offset of "_" in thisName
            set newName to characters (theOffset + 1) ¬
                thru -1 of thisName as string
        end tell
        set name of thisFile to newName
    end repeat
end tell

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