¿Puede Robocopy monitorear archivos en un incremento de tiempo de menos de un minuto?

¿Puede Robocopy monitorear archivos en un incremento de tiempo de menos de un minuto?

Robocopytiene la opción de monitorear el directorio de origen y copiar cualquier archivo que tenga cambios. Puede especificar cuántos cambios en el directorio deben ocurrir antes de copiar ( /mon ndónde nestá el número de cambios) y cuánto tiempo esperar antes de volver a escanear ( /mot tdónde testá el tiempo de espera en minutos).

Me gustaría monitorear una carpeta casi continuamente, ya que solo estoy buscando un archivo y quiero que los cambios sean básicamente instantáneos. Sin embargo, parece que no puedo hacer un monitor de robocopia durante un período de tiempo inferior a un minuto. Lo he intentado /mot 0.5y falla. También lo intenté /mot 0y robocopy simplemente sale después de escanear una vez, sin monitorear continuamente.

¿Cómo puedo hacer que Robocopy escanee una carpeta de forma casi continua, con incrementos de tiempo de menos de 1 minuto? Alternativamente, ¿existe alguna otra herramienta de línea de comandos que pueda monitorear constantemente el origen de un archivo y copiar los cambios en tiempo real?

Respuesta1

robocopia

/mot:<M>
Monitors source, and runs again in M minutes if changes are detected.

Como solo acepta minutos como argumento, supongo que no puedes obligarlo a ejecutarse con más frecuencia. Sin embargo, puede ejecutarlo utilizando un archivo por lotes y dejar que la sincronización y el bucle se produzcan en el archivo por lotes o en tareas programadas en lugar de dentro de robocopy.

Respuesta2

Sus etiquetas indican que está usando Windows 8. Esto es bueno, ya que tiene la excelente herramienta que es PowerShell y un pequeño y útil cmdlet llamado Register-ObjectEvent.

Cree un archivo de texto, cambie la extensión a .ps1y pegue el siguiente script en el archivo. Cambie la $watchedFoldervariable a la carpeta que desea ver. Cambie la función Hacer algo para incluir su comando robocopy o lo que sea. Ejecute el script, siempre que el script esté ejecutándose, esa función se ejecutará (¡casi instantáneamente!) cada vez que se cambie un archivo o carpeta en la carpeta supervisada.

Puede ejecutar este script al iniciar Windows y se ejecutará en segundo plano en todo momento sin usar un temporizador.

$block = {    
    function Do-Something
    {
        param ($message, $event)
        # function to call when event is raised
        # do a robocopy or whatever

        Start-Process cmd.exe "/C echo $("{0} {1}" -f $event.SourceEventArgs.FullPath, $message)&pause"
    }

    $watchedFolder = "C:\Users\Admin-PC\Desktop"
    $watcher = New-Object System.IO.FileSystemWatcher
    $watcher.Path = $watchedFolder

    Register-ObjectEvent -InputObject $watcher -EventName Created -SourceIdentifier File.Created -Action { Do-Something "Created" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Deleted -SourceIdentifier File.Deleted -Action { Do-Something "Deleted" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Changed -SourceIdentifier File.Changed -Action { Do-Something "Changed" $event }
    Register-ObjectEvent -InputObject $watcher -EventName Renamed -SourceIdentifier File.Renamed -Action { Do-Something "Renamed" $event }
}

$encodedBlock = [Convert]::ToBase64String([Text.Encoding]::Unicode.GetBytes($block))

Start-Process PowerShell.exe -verb Runas -argumentlist '-WindowStyle Hidden', '-NoExit', '-EncodedCommand', $encodedBlock

Véalo en acción


  1. Ejecute el script guardado.
    Ejecute el script guardado.

  2. Verá parpadear una ventana de la consola, después de que se cierre, la única indicación de que se está ejecutando serán un par de procesos nuevos.
    ingrese la descripción de la imagen aquí

  3. Haz algunas cosas en tu escritorio para probar.
    ingrese la descripción de la imagen aquí

  4. Finalice el proceso de PowerShell creado cuando ya no desee que se ejecute.

Alguna información de fondo- En caso de que no esté familiarizado con las herramientas utilizadas en esta respuesta.


Respuesta3

DSincronizares una utilidad independiente que le permite sincronizar periódicamente dos o más carpetas en el disco duro, disquete, LAN, llave USB, CD-DVD (con software de escritura de paquetes) y servidor FTP. No se trata exactamente de qué se trata la pregunta, pero es lo más parecido que pude encontrar.

Yo también estaba buscando una solución al tiempo mínimo de 1 minuto en Robocopy y encontré esta pregunta de hace dos años. Al final me sugirieron este software y eso es lo que estoy usando. Para que conste, no tengo ninguna afiliación con el software.

Ventajas:

  • Tiene sincronización en tiempo real.
  • Puede agregar varios pares de carpetas y elegir qué pares están activos en un momento dado usando las casillas de verificación junto a ellos.
  • Sin instalador, programa independiente.
  • Puede excluir o incluir archivos a través de patrones o por tiempo de modificación haciendo clic en el botón 'filtrar'.
  • (otros; vea la captura de pantalla a continuación. Las casillas de verificación y los botones tienen información sobre herramientas de ayuda adicional).

Contras:

  • Es una utilidad GUI, no hay opciones de línea de comandos disponibles.
  • Todos los pares de carpetas comparten la misma configuración

captura de pantalla

La opción de sincronización en tiempo real está marcada en la captura de pantalla en la sección "Opciones especiales". Esto sería lo que la pregunta parece describir como objetivo. Si no está marcado y no tiene un temporizador configurado, puede hacer clic en el botón "Sincronizar" para iniciar una sincronización única.

Cómo sincronizar dos carpetas:

  • Seleccione una carpeta de origen que desee monitorear utilizando el cuadro de diálogo de exploración en la esquina superior izquierda.
  • Seleccione una carpeta de destino donde desee copiar los cambios en la esquina superior derecha.
  • (Opcional) Si ingresó manualmente la ruta de la carpeta en lugar de usar el cuadro de diálogo de exploración, haga clic en el botón 'PRUEBA' entre los dos cuadros en la parte superior para ver si esas carpetas realmente existen. También querrás marcar la opción 'Crear carpeta si no existe' en la mayoría de los casos para asegurarte de que se copien las carpetas nuevas, ya que no está marcada de forma predeterminada y, por lo tanto, el programa solo copia archivos de forma predeterminada.
  • Marque la casilla de verificación 'Sincronización en tiempo real'. La sincronización ahora está activa y todos los cambios de la carpeta del lado izquierdo se copiarán a la carpeta del lado derecho.

También encontré estoVideo de Youtube, que muestra el software en acción. Muestra una versión anterior y las opciones no están en el mismo lugar, pero da una idea de cómo funciona el software.

Respuesta4

use el modificador /MON 1, cada vez que se cambie el archivo, robocopy se sincronizará

información relacionada