¿Cómo puedo hacer que robocopy sea silencioso en la línea de comando excepto para el progreso?

105

Estoy usando robocopy para hacer copias de seguridad con un script de PowerShell, y es bastante impresionante, excepto que me gustaría que solo muestre el porcentaje de progreso mientras se copia y no toda la otra información.

La otra información satura la ventana de comandos, que yo limpiaría y simplificaría para que sea fácil ver el progreso general de la copia de seguridad.

es posible?

Gracias, andrew

AndyGeek
fuente

Respuestas:

192

Agregué los siguientes 2 parámetros: /np /nfl

Entonces, junto con los 5 parámetros de AndyGeek'srespuesta, /njh /njs /ndl /nc /nsobtienes lo siguiente y es silencioso:

ROBOCOPY [source] [target] /NFL /NDL /NJH /NJS /nc /ns /np

/NFL : No File List - don't log file names.
/NDL : No Directory List - don't log directory names.
/NJH : No Job Header.
/NJS : No Job Summary.
/NP  : No Progress - don't display percentage copied.
/NS  : No Size - don't log file sizes.
/NC  : No Class - don't log file classes.
R. Koene
fuente
2
Todavía se muestra un mensaje "100%".
Scott Chu
13
Esto todavía imprime una sola línea vacía que se nota en los archivos por lotes.
wqw
7
/nc /nsno es necesario cuando /nfl /ndlse especifica.
Vojtěch Dohnal
3
@wqw, simplemente agregue un> NUL en el EOL, y la línea vacía es historia.
Hierba
2
@ScottChu Esto se imprime al 100% cuando usa el modificador / mt. Supongo que tendrás que decidir si quieres multiproceso o no se muestra% s
Loaf
40

Lo hice usando las siguientes opciones:

/njh /njs /ndl /nc /ns

Tenga en cuenta que el nombre del archivo todavía se muestra, pero eso está bien para mí.

Para obtener más información sobre robocopy, vaya a http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx

AndyGeek
fuente
3
/ nfl para suprimir el nombre del archivo
xagyg
12
Aparece si usa /miro /purgelos archivos adicionales aún están registrados. No puedo encontrar una manera de apagar eso.
bbodenmiller
1
tenga en cuenta que con robocopy la barra de progreso es solo% por archivo, no muestra el progreso con el número total de bytes copiados del total /% de eso.
barlop
Muy interesante apreciación de @bbodenmiller ... Registro muy molesto de estos archivos ...
toscanelli
18

Si no desea ningún resultado, esta es la forma más sencilla:

robocopy src dest > nul

Si aún necesita algo de información y solo desea quitar partes de la salida, use los parámetros de R.Koene'sanswer.

SHernandez
fuente
5
Prueba que > log:nulbajo x64 win8.1, hay un archivo de registro vacío. > nulfunciona como se esperaba.
Ivan Yan
1
El logarchivo "vacío" que esto genera ni siquiera está realmente vacío. Es simplemente guardar los datos en una secuencia alternativa que es invisible para Explorer, pero que todavía está presente en el disco. (Puede verificar usando el dir /rcomando para mostrarlo). @IvanYan es correcto, > nules el comando correcto para descartar la salida por completo.
jmbpiano
16

En PowerShell, me gusta usar:

robocopy src dest | Out-Null

Evita tener que recordar todos los conmutadores de la línea de comandos.

Aaron Tribou
fuente
Al hacer esto, inmediatamente eliminó el comando sin previo aviso. Estaba usando /PURGE.
Sawtaytoes
Out-Null no debería tener ningún efecto en la ejecución del comando robocopy. Simplemente redirige el flujo de salida. msdn.microsoft.com/en-us/powershell/reference/4.0/… Puede intentar eliminar Out-Null para ver si la salida descartada ofrece alguna pista de lo que está sucediendo.
Aaron Tribou
2

Una solución alternativa, si desea que sea absolutamente silencioso, es redirigir la salida a un archivo (y, opcionalmente, eliminarlo más tarde).

Robocopy src dest > output.log
del output.log
HSM
fuente
6
también> NUL simplemente descarta la salida, no hay archivo de qué preocuparse.
Sellorio
1
o canalizar a Out-Nullen PowerShell
orad
2

robocopy también tiende a imprimir líneas vacías incluso si no hace nada. Estoy filtrando líneas vacías usando un comando como este:

robocopy /NDL /NJH /NJS /NP /NS /NC %fromDir% %toDir% %filenames% | findstr /r /v "^$"
TarmoPikaro
fuente
0

El> nulo no funciona entre comillas. Ve el> nulo como el nombre del archivo por lotes.

El robocopy no funcionó !!!

Aquí está el nuevo archivo por lotes:

robocopy /mir /B /r:1 /nfl /ndl /njh /njs /nc /ns /np c:\EnvBackup c:\offsite_backup\EnvBackup

robocopy /mir /B /r:1 /nfl /ndl /njh /njs /nc /ns /np c:\shares c:\offsite_backup\shares

robocopy /mir /B /r:1 /nfl /ndl /njh /njs /nc /ns /np c:\Quickbooks_Backup c:\offsite_backup\Quickbooks_Backup
Jason L
fuente
-1

No es necesario redirigir a un archivo y eliminarlo más tarde. Tratar:

Robocopy src dest > null 
areB
fuente
2
Esto crea un archivo nully escribe el registro en él. Lo silencia en la línea de comandos a costa de las escrituras de la unidad de almacenamiento.
Sawtaytoes