Para que xcopy solo copie los ficheros modificados desde la última copia, debemos indicarle varios parámetros, con lo que la orden quedaría así:
xcopy "c:\origen\*.*" "c:\destino\*.*" /d/e/y/c/i/h > log.txt 2>&1
El significado de los parámetros es este:
/d: Copia archivos cambiados durante o después de la fecha indicada. Si no se da ninguna fecha, copia sólo aquellos archivos cuya fecha de modificación en el origen es más nueva que la fecha de modificación en el destino.
/e: Copia directorios y subdirectorios, incluyendo los vacíos.
/y: Suprime la pregunta de confirmación para sobrescribir un archivo de destino existente.
/c: Continua copiando incluso si ocurren errores (como que el archivo a copiar este en uso, con lo que dará un error de acceso denegado y no lo copiará).
/i: Si el destino no existe y hay que copiar más de un archivo, se asume que el destino debe ser un directorio.
/h: Copia también archivos ocultos y archivos de sistema.
> log.txt: obtendremos un fichero log.txt (o el nombre que queramos indicarle) con un listado de los ficheros que se han copiado. Si omitimos esta ultima parte, el listado de ficheros copiados aparecerá en una pantalla de linea de comandos que se cerrará automáticamente al terminar la copia.
2>&1: incluirá en el fichero log.txt los errores que vayan surgiendo al copiar los archivos.