0 votos

¿Cómo clasificar archivos con nombres similares en carpetas distintas?

Tomé prestado el código de abajo de este hilo: ¿Cómo clasificar archivos con nombres similares en carpetas distintas? (AppleScript)

Pero me gustaría dar un paso más para situaciones como ésta:

DE:

  • VD010234.mp4
  • VD010235.mp4
  • VD020234.mp4
  • VD020235.mp4
  • VD030234.mp4
  • VD030235.mp4

A:

01234 (Carpeta)

  • VD010234.mp4
  • VD020234.mp4
  • VD030234.mp4

01235 (Carpeta)

  • VD010235.mp4
  • VD020235.mp4
  • VD030235.mp4

En esencia, sólo mirar una parte del nombre del archivo, en el caso anterior, 234 y 235, y encontrar todos los archivos con esa referencia y ponerlos en carpetas tituladas.

    set DELIM to {".mp4", ".", ":"}

    tell application "Finder"
        -- assumption: selection is a Finder selected containing folder of the items
        set selected to selection
        set current_folder to (first item of selected) as text as alias
        set mlist to (sort (every item of folder current_folder) by name) as alias list

        set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, DELIM}
        if mlist is {} then return
        repeat with this_file in mlist
            -- the DELIM guarantees that this item is the basename without extension
            set basename to text item -2 of (this_file as text)
            -- avoids duplicate folder name collisions
            if not (exists folder ((current_folder as text) & basename)) is true then
                set new_folder to make new folder at current_folder with properties {name:basename}
            end if
            move (this_file as text) to new_folder
        end repeat
        set AppleScript's text item delimiters to TID
    end tell

0voto

Mockman Puntos 16

Revisión:

set DELIM to {".mp4", ".", ":"}
tell application "Finder"
    -- assumption: selection is a Finder selected containing folder of the items
    set selected to selection
    set current_folder to (first item of selected) as text
    set mList to (every item of folder current_folder whose name ends with "mp4")

    set {TID, AppleScript's text item delimiters} to {AppleScript's text item delimiters, DELIM}
    if mList is {} then return
    repeat with this_file in mList
        set basename to text -1 thru -3 of text item -2 of (this_file as text) -- last 3 char of name
        set that_folder to (current_folder as text) & basename -- use above for folder name

        try
            move this_file to that_folder -- if folder exists then move
        on error number -10000 -- if not, make folder, then move
            set that_folder to make new folder at current_folder with properties {name:basename}
            move this_file to that_folder
        end try
    end repeat
end tell
set AppleScript's text item delimiters to TID

En lugar de utilizar todo el nombre del archivo, toma los tres últimos caracteres de cada nombre (por ejemplo, 234, 235) y los utiliza para crear las carpetas y seleccionar los archivos que se moverán a ellas.

El script original ordenaba cada archivo por nombre y luego procesaba cada archivo en un orden que coincidía con las carpetas de destino (es decir, creaba una carpeta, procesaba todos los archivos coincidentes, creaba otra carpeta, etc ). Utilizar sólo los últimos caracteres del nombre rompe ese orden. Esta versión añade el paso de determinar el destino de cada fichero independientemente, y elimina la ordenación que ahora no tiene ningún valor y probablemente ralentiza un poco las cosas.

Dos cosas a tener en cuenta sobre este script:

  • Si el nombre de su archivo contiene un punto, los delimitadores fallarán en su garantía.
  • He añadido un filtro para procesar sólo archivos mp4

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