Como robocopy com o progresso registrado apenas no console?

8

Desejo executar o RoboCopy que atualizará o console com% progress, mas não sobrecarregará o arquivo de log com% progress.

O comando RoboCopy a seguir executará a cópia desejada e anexará as informações de log no arquivo de log.

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

O problema é que o arquivo de log está cheio de% de atualizações de progresso. Portanto, preciso alterar o comando para isso:

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

Agora, o problema é que não recebo% de atualizações de progresso na tela.

Eu li http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx algumas vezes agora e não consigo encontrar as opções necessárias. Estou faltando alguma coisa ou o que eu quero alcançar não é possível?

Tim Murphy
fonte
Você precisa usar apenas ferramentas internas?
Hello71

Respostas:

2

Como ninguém respondeu isso por tanto tempo, pensei em sugerir algumas coisas.

Se você estiver usando scripts em lote, não deve ser muito difícil usar o sed para remover as informações de progresso indesejadas do arquivo de log. Não tenho experiência suficiente para fornecer uma solução para usá-lo sem gastar algum tempo com isso.

Existe uma única versão do arquivo .exe sedno UnxUtils (com uma versão um pouco mais atualizada no zip de atualização).

Outra opção seria usar XXCOPY em vez de Robocopy. Possui um número realmente ridículo de switches (acima de 230), o que permite que você faça o que quiser. Você tem que passar a noite inteira escolhendo quais deseja usar. Ele também possui uma caixa de diálogo de progresso da GUI, se você preferir usá-lo.

Existe uma versão gratuita para uso pessoal, que não pode ser usada para scripts automatizados, pois você precisa seguir as instruções de maneira interativa, diferente da versão paga.

XXCOPIA

Outra alternativa é o RichCopy , que possui uma GUI que pode ser usada para escolher suas opções. Em seguida, ele pode fornecer a linha de comando da sua operação para uso em scripts em lote.

RichCopy

paradroid
fonte
1

Re: robocopy e progresso registrado 'ruído'

Solução: use apenas / TEE e deixe registrar o 'ruído', caso contrário você não verá nenhum progresso. Em seguida, use sed, conforme sugerido pela primeira vez para limpar o arquivo de log da seguinte maneira:

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

remova o .bak se não desejar um backup não corrigido. O sed está disponível para janelas aqui e funciona bem, pelo menos para uso em uma única linha.

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

* (os comandos sed nos scripts unix bash / cshell geralmente são distribuídos em várias linhas, adicionando mais flexibilidade e complexidade. Eu não espero que esse tipo de comando sed funcione com scripts cmd do Windows, mas o sed ainda é útil no Windows).

Mac
fonte
1 Não há uma maneira de tubulação stdoutatravés seddiretamente?
Paradroid
1
é claro que você pode canalizar através sed, que no entanto remover as informações de progresso da exibição do console, bem como, possivelmente, o arquivo de log ...
Mac
Claro, mas pensei que talvez o teecomando pudesse ser usado em vez da /TEEopção do Robocopy , mas acabei de perceber que faz parte TCC/LEe não um CMDcomando padrão . Está disponível no PowerShellentanto.
Paradroid
na verdade .. ainda grava a bagunça do progresso no arquivo de log! Assim é exatamente o oposto do que é desejado. Acabei de testar com: robocopy. tst /log:n:\tst.log / tee | sed "s / \ x0d. * \ x0d. * $ //"
Mac
T também está disponível a partir GnuWin32 .. mas teria o mesmo problema;) gnuwin32.sourceforge.net/packages/coreutils.htm
Mac