Necesito configurar algún tipo de script en mi máquina Vista, para que cada vez que se agregue un archivo a una carpeta en particular, se active automáticamente un proceso en segundo plano que opera en el archivo. (El proceso en segundo plano es solo una utilidad de línea de comandos que toma el nombre del archivo como argumento, junto con algunas otras opciones predefinidas).
Me gustaría hacer esto usando las características nativas de Windows, si es posible, por razones de rendimiento y mantenimiento. He investigado el uso del Programador de tareas, pero después de examinar el sistema de activación durante un tiempo, no he podido darle mucho sentido, y ni siquiera estoy seguro de si es capaz de hacer lo que necesito.
Agradecería cualquier sugerencia. ¡Gracias!
fuente
Respuestas:
En el trabajo usamos Powershell para monitorear carpetas.
Se puede usar desde Windows Vista (.NET y PowerShell están preinstalados) sin herramientas adicionales.
Este script monitorea una carpeta determinada y escribe un archivo de registro. Puede reemplazar la acción y hacer lo que quiera, por ejemplo, llamar a una herramienta externa
Archivo de registro de ejemplo
StartMonitoring.ps1
Cómo utilizar
$watcher.Path = "D:\source"
$watcher.Filter = "*.*"
$watcher.IncludeSubdirectories = $true
StartMonitoring.ps1
Para detener la supervisión, es suficiente cerrar la ventana de PowerShell
Otras lecturas
fuente
StartWatching.ps1
ventana para detener el monitoreo. El segundo script sólo funciona si se incluye en su primera secuencia de comandos para guardar las variables$created
,$changed
,$deleted
o$renamed
Parece que está en la línea correcta: podría usar el programador de tareas para ejecutar un archivo .bat o .cmd de forma regular y ese archivo podría comenzar con una línea para verificar la existencia del archivo requerido; de hecho, yo 'comprobaría la inexistencia del archivo; por ejemplo:
También puede modificar este código y ejecutarlo en un bucle con, por ejemplo, 1 minuto de retraso en el bucle y luego poner una referencia al archivo por lotes en la carpeta de inicio de Windows:
Hay otras formas de lograr un retraso de acuerdo con la versión de Windows en ejecución y los kits de recursos adicionales que se han instalado, pero el comando PING funciona prácticamente en todas las circunstancias. En el comando PING anterior, se ejecutan 10 PINGS fantasmas con un retraso de 6000 ms (es decir: 6 segundos) entre ellos, puede jugar con estos valores para lograr el retraso que necesita entre los bucles de archivo por lotes.
fuente
-n 10
frente-n 1
.IF NOT EXIST C:\NO_SUCH_FILE_EVER.foo
. Hackish, pero funciona. Gracias por la ideaGracias a todos por las sugerencias.
Terminé escribiendo un VBScript que se basó aproximadamente en la idea de Linker3000 de sondear la carpeta y usar el Programador de tareas para que se ejecute al inicio. Terminé obteniendo la sintaxis básica de este recurso e hice los ajustes necesarios.
Todavía me gustaría optimizarlo en algún momento, teniendo las agallas del script ejecutadas en un sistema controlado por eventos, pero me he quedado sin tiempo para trabajar en ello, y, bueno, esto es lo suficientemente bueno.
Aquí está el script, en caso de que alguien esté interesado (con el segmento de conversión irrelevante redactado para mayor claridad):
(Además, no quiero dejar esta pregunta oficialmente sin respuesta, y odio aceptar mi propia respuesta a la pregunta, ¡pero voté por la respuesta de Linker3000 como agradecimiento!)
fuente
Puede mirar DropIt (gratis). El programa es apropiado para procesar archivos entrantes de manera automatizada. Puede mover, copiar, eliminar y pasar parámetros a otros programas de línea de comandos para convertir imágenes, dividir archivos PDF, etc.
fuente
Si la acción es solo para copiar archivos modificados, puede usar robocopy / MON
No sé si robocopy utiliza FileSystemWatcher o si trabaja para sondear los cambios
fuente
O puede usar Watch 4 Folder . Aparentemente es Freeware, portátil y compatible con Windows 7. No lo he probado, pero lo encontré a través de una búsqueda en la web y pensé en pasarlo.
También me gusta el script VBS, también presentado en el sitio.
fuente
También encontré un vigilante que parece ser bastante grande, y un watchexec más pequeño que no he probado.
fuente
Utilizamos la herramienta comercial (es decir, no gratuita) Folder Poll de http://www.myassays.com/folder-poll para hacer justamente esto. Es una aplicación de Windows que incluye una aplicación de administrador fácil de usar para permitir una configuración fácil. Además, hay una opción de configuración XML. El sondeo de la carpeta real se ejecuta como un servicio de Windows (por lo que se inicia automáticamente en cada reinicio). Cuando se detecta un nuevo archivo en una carpeta encuestada, se puede iniciar automáticamente una aplicación (puede especificar sus propios argumentos de línea de comandos personalizados). También puede hacer otras cosas como copiar / mover archivos. Además, la actividad se puede registrar en un archivo de registro y hay otras operaciones avanzadas.
fuente