Ok así que esto es un complejo script que espero que alguien por ahí me puede ayudar con porque he pasado todo el día tratando de averiguar esto.
Digamos que colecciono imágenes de gatos de Instagram y tengo muchas carpetas de diferentes gatos en mi ordenador. Identifico cada una de ellas añadiendo un comentario en la sección "obtener información" de MacOS de cada carpeta con el nombre de la cuenta de Instagram de cada gato. Por ejemplo: @juniorcat
Utilizo Hazel (noodlesoft.com) para ordenar mis carpetas automáticamente, pero no sabe cómo combinar el contenido de las nueva carpeta con el carpeta antigua . Así que tengo que hacer un Applescript incrustado.
Este script que armé es una combinación de muchos otros que encontré en Internet y hace lo siguiente:
-
Busca en el directorio principal del nueva carpeta para ver si hay hay una carpeta antigua con el mismo comentario "get info" de @juniorcat que existe. Lo hace buscando todas las carpetas de ese directorio que no han se ha añadido hoy.
-
Si hay un carpeta antigua que sí tiene @juniorcat en la sección de comentarios "get info", entonces el script moverá todas las imágenes de la sección nueva carpeta a la carpeta antigua .
-
El script cambiará secuencialmente el nombre de todas las imágenes que se han se han movido al carpeta antigua con el nombre de esa carpeta y con el número más bajo disponible. Por ejemplo: Junior the Cat 5.jpg, Junior the Cat 6.jpg, etc.
Tengo la 1 y la 2 funcionando correctamente, pero estoy teniendo problemas para conseguir que el script renombre SOLO los archivos que muevo al carpeta antigua y no todo el contenido de esa carpeta.
Siempre que lo intento me sale el siguiente error:
error "No se puede obtener el nombre de "/Users/david/Desktop/Gatos hermosos/Junior el Gato/prueba7.jpg"." número -1728 del nombre de "/Users/david/Desktop/Gatos hermosos/Junior el Gato/prueba7.jpg"
Aquí está el script:
set theFile to ":Users:david:Desktop:Beautiful Cats:Junior the Cat-1" as alias
--This is the Hazel matched folder that is renamed with a "-1" at the end because a duplicate name exist.
set inputAttributes to "@juniorcat"
--The comment I add to identify the Instagram Account of each folder.
--Embedded Hazel Script starts here
set parentFolder to POSIX file (do shell script "dirname " & quoted form of POSIX path of (theFile))
set parentPath to quoted form of POSIX path of parentFolder
set spotlight1 to "mdfind -onlyin " & parentPath & " 'kMDItemDateAdded <= $time.today && kMDItemContentType == public.folder && kMDItemFinderComment == " & inputAttributes & "'"
set oldFolder to (do shell script spotlight1)
-- The above shell script is a spotlight search of folders that contain the same comment and have NOT been added today. This is to get the old existing folder.
-- Move Files Script
if (oldFolder = "") then
else
set targetFolder to (POSIX file oldFolder) as alias
tell application "Finder"
move (entire contents of theFile) to the targetFolder
end tell
-- Select the Images added
set targetPosix to quoted form of POSIX path of targetFolder
set command2 to "mdfind -onlyin " & targetPosix & " 'kMDItemDateAdded >= $time.today && kMDItemKind = *image'"
set movedImages to paragraphs of (do shell script command2)
--Rename all the images selected from the above shell script
set text item delimiters to "."
tell application "Finder"
set all_files to every item of movedImages
-- If you replace "movedImages" with "targetFolder", it will name all of the files in that folder. I only want to rename the files I move into this folder.
set new_name to name of folder targetFolder
repeat with index from 1 to the count of all_files
set this_file to item index of all_files
set {itemName, itemExtension} to {name, name extension} of this_file
if index is less than 10 then
set index_prefix to " "
else
set index_prefix to " "
end if
if itemExtension is "" then
set file_extension to ""
else
set file_extension to "." & itemExtension
end if
set the name of this_file to new_name & index_prefix & index & file_extension as string
end repeat
end tell
end if