Preguntado anteriormente sobre el cambio de nombre de los archivos en una carpeta ( Rename File(s) from Foldername using automator/AppleScript ), y ahora tengo un flujo de carpetas que casi funciona.
Creé una carpeta en mis descargas llamada DOIT (según los archivos adjuntos y las capturas de pantalla del flujo de trabajo). Dejo una carpeta allí llamada "Race Track 2019" que tiene algunos nombres de archivo aleatorios.
Lo que quiero es cambiar el nombre de los archivos secuencialmente desde el nombre de la carpeta. Tengo la variable de nombre de carpeta funcionando (según las capturas de pantalla) pero no cambiará el nombre de los archivos.
Estaba buscando (en este ejemplo) quedarme con 2 archivos llamados "Race Track 2019-1 y Race Track 2019-2"
En la imagen Acción de carpeta de Automator más abajo en esta respuesta, preste atención a las acciones de Automator y su configuración. En particular, las Opciones configuradas en la acción Obtener valor de variable tiene [√] Ignorar la entrada de esta acción marcada.
La primera acción , Establecer valor de variable , se establece IncomingFolder
y se filtra en una acción Filtrar elementos del buscador para obtener solo la carpeta para usar una acción Ejecutar script de shell para determinar y asignarla a la variable en el conjunto . Valor de la acción Variable . name
FolderName
Debe haber una ruptura lógica entre esta acción Establecer valor de variable y la acción Obtener valor de variable subsiguiente para luego filtrar la (s) carpeta(s) ya que son los archivos los que se renombrarán, no la (s) carpeta(s) .
La imagen que se muestra más abajo en esta respuesta es de la Acción de carpeta de Automator en funcionamiento real y por qué no hay acción Obtener elementos del buscador seleccionados ni marcas de verificación de círculo verde , ya que se ejecuta en segundo plano cuando la carpeta Race Track 2019 se coloca en el Carpeta DOIT .
En mi prueba:
Race Track 2019
├── cb4d4gdc.jpg
└── nn49494.jpg
Convertirse:
Race Track 2019
├── Race Track 2019-1.jpg
└── Race Track 2019-2.jpg
Aquí hay otro enfoque que utiliza un script AppleScript para la acción de carpeta .
Uno de sus beneficios es que puede manejar varias carpetas que se colocan al mismo tiempo en la carpeta de destino de la acción de carpeta .
Con el Editor de secuencias de comandos , guarde el código AppleScript de ejemplo en ~/Library/Scripts/Folder Action Scripts y utilice Configuración de acciones de carpeta para asignarlo a la carpeta de destino .
Ejemplo de código AppleScript :
on adding folder items to thisFolder after receiving theseNewItems
tell application "Finder"
repeat with thisItem in theseNewItems
set thisItemsProperties to properties of thisItem
if class of thisItemsProperties is folder then
set folderName to name of thisItemsProperties
set theseFiles to files of entire contents of thisItem
repeat with i from 1 to count theseFiles
set name of item i of theseFiles to ¬
folderName & "-" & i & "." & ¬
name extension of item i of theseFiles
end repeat
end if
end repeat
end tell
end adding folder items to
Notas:
El código AppleScript de ejemplo , tal como está codificado, asume que los archivos que se van a renombrar tienen una extensión . Si necesita actuar en archivos que no tienen una extensión , entonces el código AppleScript de ejemplo deberá modificarse para adaptarse a esa condición.
Nota: ¡ Esta acción de carpeta de Automator está diseñada para recibir una sola carpeta a la vez!
Si se eliminan varias carpetas, todos los archivos tendrán el nombre de la primera carpeta eliminada.
Para varias carpetas , consulte: Uso de un script AppleScript para la acción de carpeta
Si desea poder seleccionar carpetas en Finder y cambiar el nombre de los archivos , cree un Servicio de Automator /Acción rápida con la configuración que se muestra en la imagen del Servicio de Automator /Acción rápida a continuación, agregando una acción Ejecutar AppleScript con el código AppleScript de ejemplo .
Ejemplo de código AppleScript :
on run {input, parameters}
tell application "Finder"
repeat with thisItem in input
set folderName to name of thisItem
set theseFiles to files of entire contents of thisItem
repeat with i from 1 to count theseFiles
set name of item i of theseFiles to ¬
folderName & "-" & i & "." & ¬
name extension of item i of theseFiles
end repeat
end repeat
end tell
end run
Notas:
El código AppleScript de ejemplo , tal como está codificado, asume que los archivos que se van a renombrar tienen una extensión . Si necesita actuar en archivos que no tienen una extensión , entonces el código AppleScript de ejemplo deberá modificarse para adaptarse a esa condición.
Nota: El código AppleScript de ejemplo es solo eso y, sin ningún manejo de errores incluido , no contiene ningún manejo de errores adicional que pueda ser apropiado. El usuario tiene la responsabilidad de agregar cualquier manejo de errores que sea apropiado, necesario o deseado. Eche un vistazo a la declaración de prueba y la declaración de error en la Guía del lenguaje AppleScript . Consulte también Trabajar con errores . Además, el uso del comando de retardo puede ser necesario entre eventos cuando corresponda, por ejemplo , con el valor del retardo delay 0.5
establecer adecuadamente.
Dato curioso: si haces esto un poco mal en Automator, puedes terminar cambiando el nombre de todos los archivos de tu computadora. Puede que lo haya hecho más que un poco mal, pero (si alguna vez termino de reinstalar mi sistema operativo) no creo que pruebe mi teoría.
jason smith