¿Cómo robocopy con progreso registrado solo en la consola?

8

Quiero ejecutar RoboCopy que actualizará la consola con% progreso pero no saturará el archivo de registro con% progreso.

El siguiente comando RoboCopy realizará la copia deseada y agregará información de registro al archivo de registro.

RoboCopy <source> <dest> /log+:<log file> /tee

El problema es que el archivo de registro está abarrotado de% de actualizaciones de progreso. Por lo tanto, necesito cambiar el comando a esto:

RoboCopy <source> <dest> /log+:<log file> /tee /np

Ahora el problema es que no obtengo% de actualizaciones de progreso en la pantalla.

He leído http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx varias veces ahora y no puedo encontrar el (los) interruptor (es) que necesito. ¿Me estoy perdiendo algo o lo que quiero lograr no es posible?

Tim Murphy
fuente
¿Tienes que usar solo herramientas integradas?
Hola71

Respuestas:

2

Como nadie ha respondido esto durante tanto tiempo, pensé en sugerir un par de cosas.

Si está utilizando scripts por lotes, no debería ser demasiado difícil usar sed para eliminar la información de progreso no deseada del archivo de registro. Sin embargo, no tengo suficiente experiencia para ofrecerle una solución para usarlo sin perder tiempo.

Hay una única versión de archivo .exe seden UnxUtils (con una versión un poco más actualizada en el zip de actualización).

Otra opción sería usar XXCOPY en lugar de Robocopy. Tiene una cantidad realmente ridícula de interruptores (más de 230), que le permite hacer lo que quiera. Tienes que pasar toda una noche eligiendo cuáles quieres usar. También tiene un cuadro de diálogo de progreso de GUI, si prefiere usar eso.

Hay una versión gratuita para uso personal, que no se puede usar para secuencias de comandos automáticas, ya que debe seguir las instrucciones de forma interactiva, a diferencia de la versión de pago.

XXCOPIA

Otra alternativa es RichCopy , que tiene una GUI que puede usar para elegir sus opciones. Luego puede darle la línea de comandos de su operación para usar en scripts por lotes.

RichCopy

paradroid
fuente
1

Re: robocopy y progreso registrado 'ruido'

Solución: use just / TEE y deje que registre el 'ruido', de lo contrario no verá ningún progreso. Luego use sed, como se sugirió primero para limpiar el archivo de registro de la siguiente manera:

sed -i.bak "s / \ x0d. * \ x0d. * $ //" logfile.txt

elimine el .bak si no desea una copia de seguridad sin reparar. sed está disponible para Windows aquí, y funciona bien, al menos para el uso de una sola línea *.

http://gnuwin32.sourceforge.net/packages/sed.htm

* (los comandos sed en las secuencias de comandos unix bash / cshell a menudo se extienden en varias líneas, lo que agrega más flexibilidad y complejidad ... No espero que ese tipo de comandos sed funcionen con las secuencias de comandos cmd de Windows, pero sed sigue siendo útil en Windows).

Mac
fuente
1 ¿No hay una manera de tubería stdouta través seddirectamente?
paradroid
1
por supuesto se puede canalizar a través de sed, que sería sin embargo quitar la información de progreso de la pantalla de la consola, así como, posiblemente, el archivo de registro ...
Mac
Por supuesto, pero pensé que tal vez el teecomando podría usarse en lugar del /TEEinterruptor de Robocopy , pero me acabo de dar cuenta de que es parte TCC/LEy no un CMDcomando estándar . Sin PowerShellembargo, está disponible en .
paradroid
en realidad ... ¡todavía escribe el desorden de progreso en el archivo de registro! Entonces, es exactamente lo contrario de lo que se quiere. Acabo de probar con: robocopy. tst /log:n:\tst.log / tee | sed "s / \ x0d. * \ x0d. * $ //"
Mac
tee también está disponible en gnuwin32 .. pero tendría el mismo problema;) gnuwin32.sourceforge.net/packages/coreutils.htm
Mac