Aquí está una forma de lograr el objetivo. (No es la única manera de lograr el objetivo.)
Primero haría una plantilla de marcador de posición Acción de Carpeta utilizando Automator y después de crearla, deshabilítela en Configuración de Acción de Carpeta, pero deje el flujo de trabajo disponible donde se guarda. Esto se abrirá al final de la creación de una nueva carpeta de proyecto para luego asignarla y guardarla con su nombre, dejando así la plantilla de marcador de posición Acción de Carpeta disponible para la próxima nueva carpeta de proyecto.
Las imágenes de los dos flujos de trabajo están colocadas en la parte inferior para que la respuesta sea más fácil de leer.
Necesitarás agregar al ejemplo código de script de shell , ya que no se expresaron todas las condiciones en tu pregunta.
_
Plantilla de marcador de posición Acción de Carpeta
Ejemplo código de script de shell:
#!/bin/bash
# f = ruta de archivo completamente cualificada
# d = ruta de directorio
# fn = nombre de archivo con extensión
# n = nombre de archivo sin extensión
# e = extensión de archivo
shopt -s nocasematch
for f in "$@"; do
d="${f%/*}"
fn="${f##*/}"
# n="${fn%.*}"
e="${fn##*.}"
cd "${d}" || exit
[ -w "${d}" ] || exit
[[ ${e} == jpg ]] && mv -n "${f}" './Images/'
[[ ${e} == psd ]] && mv -n "${f}" './Photoshop/'
[[ ${fn} =~ draft ]] && mv -n "${f}" './Drafts/'
[ -f "${f}" ] && mkdir -p 'Other'; mv -n "${f}" './Other/'
done
Nota: La última prueba antes de done
maneja cualquier caso no definido previamente. Obviamente puedes optar por no usarlo y eliminarlo del ejemplo código de script de shell.
Crear Estructura de Nueva Carpeta de Proyecto
Para un flujo de trabajo de Automator para crear la nueva carpeta de proyecto, usa la captura de pantalla del siguiente flujo de trabajo:
El ejemplo código de script de shell de la Acción Ejecutar Script de Shell es:
mkdir "$1/$2" || exit
cd "$1/$2" || exit
mkdir 'After Effects' 'Assets' 'Audition' 'Drafts' 'Excel' 'Final' 'Fonts' 'Illustrator' 'Images' 'Photoshop' 'Premier' 'Word'
open "${HOME}/Library/Workflows/Applications/Folder Actions/Foobar.workflow"
Nota: Cambia el nombre del flujo de trabajo de Acción de Carpeta en el ejemplo código de script de shell de Foobar.workflow a cualquiera que sea su nombre real.
También ten en cuenta en la imagen a continuación de la Crear Estructura de Nueva Carpeta de Proyecto flujo de trabajo cómo hay divisiones lógicas entre algunas de las acciones y al final el valor de las dos variables están separadas del resto del flujo de trabajo. Si bien el flujo de trabajo mostrado en la pregunta funciona, en mi opinión esta es una mejor manera de hacerlo ya que divide el flujo de trabajo en bloques de acción lógicos, lo que facilita seguir/comprender lo que hace el flujo de trabajo.
Técnicamente, el Crear Estructura de Nueva Carpeta de Proyecto flujo de trabajo solo necesita una variable y podría estructurarse como, por ejemplo:
- Solicitar Texto acción
- Establecer Valor de Variable acción
- Variable: [Nuevo Proyecto]
- Solicitar Elementos de Finder acción
- [Opciones] [√] Ignorar la entrada de esta acción
- Obtener Valor de Variable acción
- Variable: [Nuevo Proyecto]
- Ejecutar Script de Shell acción
Aunque esto funciona y tiene menos acciones que lo que se muestra en la pregunta, sin embargo, como mencioné anteriormente sobre bloques de acción lógicos dentro del flujo de trabajo que hace más fácil seguir/comprender lo que hace el flujo de trabajo.
Configuración de Acción de Carpeta
Configuración de Acción de Carpeta se puede utilizar según sea necesario con cualquier Acción de Carpeta creada.
Configuración de Acción de Carpeta se puede abrir utilizando Spotlight presionando ⌘ Espacio y comenzando a escribir su nombre, luego una vez seleccionado, presiona Enter.
![enter image description here]()
![enter image description here]()
_
0 votos
No tengo una respuesta sobre cómo escribir la acción de la carpeta de manera que elija dinámicamente la carpeta root correcta (Proyecto 1, Proyecto 2, etc.). Sin embargo, recordé Post Haste, que también podría ser útil para ti. Además, esta otra pregunta podría ser útil.
0 votos
Para una acción de carpeta en Automator, necesitas especificar la carpeta vigilada al guardar el flujo de trabajo. Una acción de carpeta en AppleScript es un poco más flexible, ya que puedes usar el mismo script y especificar la carpeta a través del servicio
Configuración de Acciones de Carpeta
. De cualquier manera, necesitarás especificar una acción de carpeta para cada carpeta vigilada.0 votos
JSYK... La acción Run Shell Script mostrada en la captura de pantalla exhibe un uso excesivo innecesario del
mkdir
comando y en realidad solo necesita ejecutarse dos veces, por ejemplo,mkdir "$1/$2"; cd "$1/$2" || exit; mkdir 'After Effects' 'Assets' 'Audition' 'Drafts' 'Excel' 'Final' 'Fonts' 'Illustrator' 'Images' 'Photoshop' 'Premier' 'Word'
-- Ten en cuenta que las comillas simples utilizadas en el segundomkdir
comando solo son necesarias para 'After Effects', sin embargo, mi estilo de codificación suele ser citar todas las cadenas por seguridad y/o claridad visual según corresponda.0 votos
Además, la captura de pantalla en tu publicación excluye información importante que normalmente es visible, por ejemplo, qué tipo de Automator flujo de trabajo es, si has hecho la desconexión lógica entre ciertas acciones, etc. Por favor ajusta el tamaño del Automator flujo de trabajo para incluir eso sin ser excesivamente grande. Dicho eso, ¿la captura de pantalla es en realidad tu Acción de Carpeta o simplemente el flujo de trabajo para crear la estructura de carpeta jerárquica? Si también hubieras incluido las especificaciones exactas de qué va dónde, habría publicado una solución funcional como respuesta.