¿Cómo monitorear una carpeta en busca de cambios y ejecutar un comando si lo hace en Windows?


32

Hay preguntas similares para Linux y Mac , pero estoy buscando una solución de Windows aquí.

El problema es el siguiente: quiero escribir varios archivos de script (js) en una carpeta, y hacer que un programa monitoree esa carpeta para detectar cambios de archivos y agregar nuevos archivos, y ejecutar un comando siempre que eso suceda (para compilarlos todos en uno archivo único).

La solución tiene que:

  1. Monitoree los cambios de archivos y los nuevos archivos que se agregan, en una carpeta.
  2. Ejecute un comando solo si hay algún cambio.

Sería mejor si es una solución integrada (como un fragmento de JScript o VBscript), o algo que no requiere instalación.


Vea este blog para algunas aplicaciones para Windows.
Vijay

Respuestas:


3

Hay un programa llamado Belvedere que podría hacer el truco.

http://ca.lifehacker.com/341950/belvedere-automates-your-self+cleaning-pc

Es una aplicación de Windows independiente que se ejecuta en segundo plano.

Lo configuré para monitorear mi carpeta de descargas para archivos con ciertas extensiones con las últimas fechas de modificación de un día de antigüedad. Los archivos que encuentra, los elimina, sin embargo, puede hacer que ejecute una acción.


Wow, ese se ve super bien. Elegiré esto como respuesta (incluso si ya obtuve lo que necesitaba de otro) ya que probablemente sea mucho más útil y versátil que el que estoy usando, para otras personas (¡y quizás para mí en el futuro!) . +1 y aceptado!
Camilo Martin

2
Belvedere me hizo perder horas para finalmente descubrir que está lleno de errores no resueltos , especialmente con comandos personalizados. Pruebe FolderMonitor en su lugar (y úselo"{0}{1}" en el campo de parámetro, incluidas las comillas). Único problema: no puede definir un comando separado para cada carpeta. Solo uno, globalmente.
fregante

@ bfred.it Belvedere tiene sus problemas, pero funcionó para mí. FolderMonitor parece una buena solución también. Creo que es el que el usuario hace la pregunta terminó con .
dangowans



6

Con las carpetas de vigilancia .NET, esto es realmente fácil de codificar. Estoy seguro de que alguien ha hecho tal programa.

Acabo de encontrar esta joya para usted http://www.guidingtech.com/9861/automate-folder-actions-windows-watch-4-folder/


Soy consciente de lo fácil que es codificar esto en .NET. Simplemente no quería hacerlo. Pero estoy probando este que es gratis, ¡puede que también funcione! +1 para la recomendación, esa parece buena también.
Camilo Martin


2

Este es un requisito tan común que me sorprende que no haya una utilidad conveniente integrada en el sistema operativo.

De todos modos, como se mencionó anteriormente, he usado LogMonitor con éxito en el pasado. Sin embargo, encontré esta publicación de blog informativa y estoy usando Watch 4 Folder ahora.

Espero que esto te ayude.


+1, pero no diría que es un "requisito común" para nadie, excepto para nosotros los desarrolladores ... Y para el caso, hay llamadas del sistema para monitorear el sistema de archivos, así que eso cuenta como "integración del sistema operativo", supongo.
Camilo Martin

1
Bueno, lo estaba viendo desde la perspectiva de negocios y redes compartidas. Siempre quieres saber a quién culpar cuando un archivo se pierde: P. Estoy en el medio de diagnosticar tal situación en este momento: /
Vijay


2

Si desea hacer una solución integrada utilizando JScript o VBScript, lo que desea buscar es la supervisión del sistema de archivos mediante suscripciones de eventos WMI. Básicamente, usted escribe el código para monitorear una carpeta y realizar acciones de preforma cuando se detecta un cambio como:

  • __InstanceCreationEvent
  • __InstanceDeletionEvent
  • __InstanceModificationEvent

... y su secuencia de comandos se ejecuta en un intervalo para observar estos eventos. Hay muchos recursos, pero aquí hay algunos para VBScript y Powershell:


1

NirSoft tiene software para monitorear cambios de archivos en Windows
FolderChangesView

FolderChangesView es una herramienta simple que monitorea la carpeta o unidad de disco que elija y enumera cada nombre de archivo que se modifica, crea o elimina mientras se supervisa la carpeta. Puede usar FolderChangesView con cualquier unidad de disco local o con un recurso compartido de red remoto, siempre que tenga permiso de lectura para la carpeta seleccionada.

ingrese la descripción de la imagen aquí

puedes descargarlo gratis desde aquí
Más información


Parece más una herramienta de información / depuración que una de automatización, pero sigue siendo interesante.
Camilo Martin

0

Puede usar http://jnotify.sourceforge.net/ que se suscribe a eventos de monitoreo del sistema de archivos específicos del sistema operativo. El código tiene años pero aún funciona (al menos en Windows Server 2013r2 lo estaba probando ayer).

También hay github resurrection of jnotify project en https://github.com/redbooth/jnotify que no ofrece una aplicación de demostración independiente pero (de acuerdo con los registros de confirmación) parchea algunos errores.

En java7 debería haber algún tipo de sistema de archivos similar a inotify, pero aún no lo estaba probando.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.