2 votos

Querer ayudar a la creación de un applescript que se ejecuta cuando el contenido de una carpeta cambios

Te agradecería mucho un poco de ayuda con el siguiente.

Mi escenario:

Tengo un Mac app que genera los archivos RTF. Tengo una aplicación para Android que se ocupa de MultiMarkdown/Rebajas archivos.

La Mac app trabaja con proyectos, y estos tener cualquier número de archivos en ellos. Puede sincronizar automáticamente los archivos de un proyecto a una carpeta. Esencialmente, se colocará en la carpeta de un montón de archivos cada vez que se sincroniza (en apertura y cierre, y de forma manual). Cualquier cambio en esa carpeta se sincronizará automáticamente a mi dispositivo Android.

Sin embargo, las necesito para ser convertido .trituradora de archivos antes de que eso suceda, y convertida de nuevo a RTF, cuando los archivos que vienen en el cambiado (o nuevo) desde el dispositivo Android.

Así que aquí es lo que tengo en mente. Lo que me gustaría es hacer las cosas de tal manera que cuando los archivos se sincronizan desde la Mac app en su carpeta de destino, los archivos se convierten automáticamente de RTF a MMD. Ya tengo los scripts que va a hacer el de la conversión real. Y cuando la TRITURADORA de archivos de cambio, que se convierte automáticamente los archivos RTF. También tengo un script para esta.

Las preguntas que tengo son estos:

  1. ¿Cómo puedo controlar automáticamente una carpeta para los cambios de su contenido, y ejecutar una secuencia de comandos si los cambios de los archivos en esa carpeta?
  2. ¿Cómo podría hacer esto de dos maneras, sin tirar todo en un bucle sin fin? Al principio pensé que podría hacer lo siguiente:

De dos vías de conversión:

  1. Crear dos carpetas en el Mac. Uno es para los archivos de RTF, el otro es para TRITURADORA de archivos.
  2. Configurar la Mac app para sincronizar sus datos y en el de la RTF carpeta
  3. Configurar el Mac a Android sistema de sincronización (Dropbox, Bittorrent Sync, etc.) para sincronizar el contenido de TRITURADORA de carpeta con una carpeta en el dispositivo Android.
  4. Cuando el contenido de RTF carpetas cambios, convertir los archivos a MMD y poner la salida en la TRITURADORA de la carpeta. Y viceversa.

Pero, obviamente, esto va a crear un bucle infinito, ya que cada acción que desencadenará la acción inversa, sin cesar.

Una posible forma de evitar este bucle sin fin podría ser este:

  • RTF carpeta dispone de un script de R asignado. Cuando cambia el contenido, la secuencia de comandos de R ejecuta.
  • TRITURADORA de la carpeta de script M asignados. Cuando cambia el contenido, la secuencia de comandos de M se ejecuta.
  • Cuando se detecta un cambio en la RTF carpeta, la primera cosa que la secuencia de comandos de R que hace es deshabilitar la secuencia de comandos M de disparo. La última cosa en la secuencia de comandos de R antes de salir se enable script M de nuevo. De esa manera M no 'aviso' que el contenido de la carpeta estaban cambiando, mientras que R era la actualización de su contenido con los recién convertidos los archivos.
  • Lo mismo se aplica a la inversa.

Pero tal vez hay una mejor manera?

Estoy dispuesto a aprender más acerca de secuencias de comandos, y en el proceso de resolver este problema.

Hay personas con factible ideas sobre cómo lograr que lo que estoy esperando para trabajar aquí?

3voto

William T Froggard Puntos 2862

Me gustaría crear un script que controla ambas carpetas. Mi lenguaje de elección para esto es Python. AppleScript no es muy adecuado para este tipo de operación. La idea básica es escuchar para FSEvents en las dos carpetas en cuestión, y cuando se produce, de forma rápida cancelar la planificación de la secuencia de eventos para la otra carpeta, hacer algunas conversión y sincronización de operación, a continuación, cambiar la hora de la anteriormente no programada de la secuencia de eventos.

La secuencia de comandos completa, descargar aquí, con versiones modificadas de los scripts que me mostró. El MacFSEvents la instalación automática: https://www.dropbox.com/s/oylvewk90ezwb3s/File%20Sync.app.zip?dl=1

Aquí están los pasos para usarlo:

Extracto de la applet, haga clic derecho sobre él y seleccionar "Mostrar Contenido del Paquete", abierto de Contenidos, Recursos y, a continuación, editar el plist en el interior con su RTF y TRITURADORA de carpeta de emparejamientos. Usted será capaz de especificar tantos pares como usted necesita para mantener sincronizados el uno con el otro, sólo se adhieren al mismo formato que lo he usado en el plist: Una matriz por cada pareja, cada uno contiene dos elementos, el primer elemento de la ruta de acceso a la RTF carpeta, el segundo, el camino de la TRITURADORA de carpeta. Usted verá esto cuando abra el plist.

Esto debería funcionar sin ningún problema. Las carpetas ahora va a ser visto por cualquier tipo de modificación, y se tienen los archivos convertidos y transferidos a la carpeta otros.

1voto

Oskar Puntos 1242

Yo estoy a favor de las personas que están aprendiendo cómo script cosas, pero para el día a día de uso y la flexibilidad, reimplementing partes de Hazel por NoodleSoft es menos potente y eficaz para el propósito general de la solución.

Hazel icon small

De nuevo, felicitaciones a Froggard y de la Vida Inspirada por la excelente respuesta y la cuestión práctica.

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