Como posso silenciar o robocopy na linha de comando, exceto para o progresso?

105

Estou usando o robocopy para fazer backups com um script do PowerShell e é muito bom, exceto que gostaria que mostrasse apenas a porcentagem de progresso enquanto copia e não todas as outras informações.

As outras informações confundem a janela de comando, que eu limparia e simplificaria para que seja fácil ver o progresso geral do backup.

Isso é possível?

Obrigado Andrew

AndyGeek
fonte

Respostas:

192

Eu adicionei os 2 parâmetros a seguir: /np /nfl

Então, junto com os 5 parâmetros de AndyGeek'sresposta, /njh /njs /ndl /nc /nsvocê obtém o seguinte e é 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
fonte
2
Ainda há uma mensagem "100%" exibida.
Scott Chu
13
Isso ainda imprime uma única linha vazia que é perceptível em arquivos de lote.
semana
7
/nc /nsnão é necessário quando /nfl /ndlé especificado.
Vojtěch Dohnal
3
@wqw, basta adicionar um> NUL no EOL, e a linha vazia é o histórico.
Herb de
2
@ScottChu Imprime 100% quando você usa a opção / mt. Eu acho que você terá que decidir se deseja multithread ou nenhum% s mostrado
Pão de
40

Eu fiz isso usando as seguintes opções:

/njh /njs /ndl /nc /ns

Observe que o nome do arquivo ainda é exibido, mas para mim está bom.

Para obter mais informações sobre robocopy, vá para http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx

AndyGeek
fonte
3
/ nfl para suprimir o nome do arquivo
xagyg
12
Aparece se você usa /mirou /purgeos arquivos extras ainda estão registrados. Não consigo encontrar uma maneira de desligar isso.
bbodenmiller
1
observe que com o robocopy a barra de progresso é apenas% por arquivo, não mostra o progresso com o número geral de bytes copiados do total /% disso.
barlop
Apreciação muito interessante de @bbodenmiller ... Muito chato registrar esses arquivos ...
toscanelli
18

Se você não deseja nenhuma saída, esta é a maneira mais simples:

robocopy src dest > nul

Se você ainda precisa de algumas informações e deseja remover apenas partes da saída, use os parâmetros da R.Koene'sresposta.

SHernandez
fonte
5
Eu testo > log:nulno win8.1 x64, há um arquivo de log vazio. > nulfunciona como esperado.
Ivan Yan
1
O logarquivo "vazio" que isso gera não está realmente vazio. É apenas salvar os dados em um fluxo alternativo que é invisível para o Explorer, mas muito ainda presente no disco. (Você pode verificar usando o dir /rcomando para mostrá-lo.) @IvanYan está correto, > nulé o comando correto para descartar totalmente a saída.
jmbpiano
16

No PowerShell, gosto de usar:

robocopy src dest | Out-Null

Isso evita ter que lembrar todas as opções de linha de comando.

Aaron Tribou
fonte
Ao fazer isso, ele imediatamente matou o comando sem aviso. Eu estava usando /PURGE.
Sawtaytoes
Out-Null não deve ter efeito na execução do comando robocopy. Ele simplesmente redireciona o fluxo de saída. msdn.microsoft.com/en-us/powershell/reference/4.0/… Você pode tentar remover o Out-Null para ver se a saída descartada oferece alguma pista do que está acontecendo.
Aaron Tribou
2

Uma solução alternativa, se você quiser que seja absolutamente silencioso, é redirecionar a saída para um arquivo (e opcionalmente excluí-lo mais tarde).

Robocopy src dest > output.log
del output.log
HSM
fonte
6
além disso, o NUL simplesmente joga a saída fora, nenhum arquivo com que se preocupar.
Sellorio
1
ou Out-Null
canalize
2

o robocopy também tende a imprimir linhas vazias, mesmo que não faça nada. Estou filtrando as linhas vazias usando um comando como este:

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

O> null não funciona nas aspas. Ele vê o> null como o nome do arquivo em lote.

O robocopy nenhuma saída funcionou !!!

Aqui está o novo arquivo em lote:

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
fonte
-1

Não há necessidade de redirecionar para um arquivo e excluí-lo posteriormente. Experimentar:

Robocopy src dest > null 
areB
fonte
2
Isso cria um arquivo nulle grava o log nele. Ele o acalma na linha de comando ao custo das gravações da unidade de armazenamento.
Sawtaytoes de