2011-04-23 24 views
5

Actualmente estoy trabajando en una secuencia de comandos para crear una secuencia de comandos de copia de seguridad personalizada, la única pieza que me falta es un monitor de archivos. Necesito alguna forma de script que supervise una carpeta para cambios de archivos y luego ejecute un comando con el archivo que ha cambiado.Windows: secuencia de comandos de supervisión de archivos (Batch/VBS)

Así, por ejemplo, si los cambios en los archivos, que va a ejecutar "c: /syncbatch.bat% Location_Of_File%"

Cualquier ayuda en donde debería empezar es muy apreciada. ¡Muchas gracias!

+1

se puede ver aquí: http://ghostdog74.livejournal.com/37031.html en Otros. No resolverá por completo tu problema, pero tienes una idea. – ghostdog74

Respuesta

0

llamadas WMI es bastante críptico y que hace que el servicio WMI para empezar a correr, que puede contribuya a la saturación ya que es bastante grande y no puede cancelar las notificaciones de cambio de archivo que ha solicitado sin reiniciar. Algunas personas que experimentaban con la impresión remota desde una carpeta de Dropbox descubrieron que un programa VBScript simple que ejecutaba un bucle sin fin con una llamada WScript.Sleep de 10 segundos en el bucle utilizaba menos recursos. Por supuesto, para detenerlo, tiene que matar esa secuencia de comandos o programa en un desencadenador de salida que puede encontrar como un archivo vacío con un nombre específico en la carpeta de vigilancia, pero eso es aún más fácil de hacer que jugar con WMI.

El Folder Spy http://venussoftcorporation.blogspot.com/2010/05/thefolderspy.html es una aplicación de GUI de visualización de archivos/carpetas liviana y gratuita basada en DOT.NET que utilicé antes para ejecutar scripts basados ​​en cambios de archivos. Parece que la nueva versión puede pasar el nombre de archivo del evento al comando lanzado. La versión anterior que tenía todavía no soportaba la información del evento de archivo, así que cuando se lanzó, mi script tenía que instanciar un objeto del sistema de archivos y escanear la carpeta observada para localizar los nuevos archivos según criterios como fechas y tamaños.

Esta versión más reciente parece permitirle pasar el nombre del archivo al script si dice myscript.vbs "* f" en la entrada de la llamada al script opcional. Las citas pueden ser importantes al pasar rutas de archivos que tienen espacios en los nombres de las carpetas. Solo recuerda que si estás viendo eventos de cambio obtendrás muchos de ellos a medida que un archivo crezca o sea editado, generalmente solo quieres notificaciones de archivos agregados o eliminados.

Otro truco que su script puede hacer es poner el tamaño del archivo en una variable, dormir por unos segundos y revisar el archivo nuevamente para ver si ha cambiado. si no ha cambiado en unos pocos segundos, generalmente puede asumir que lo creado está escrito en el disco. si sigue cambiando solo el ciclo hasta que sea estable.

+0

A menos que se deshabilite deliberadamente, WMI se ejecuta en todos los sistemas Windows que he usado desde XP. ¿Así que no estoy seguro de cómo está más hinchado que una aplicación .Net de terceros? – GravityWell

+0

@GraviWell es portátil, pequeño y puede terminar en el momento justo, al menos para mí El Folder Spy es una solución mucho mejor para este problema. En otra nota, es genial que tiene un SDK, que será útil para otra cosa que tengo en mente, así que, doble pulgar hacia el AP – vvolkgang

Cuestiones relacionadas