Come eseguire il robocopy con i progressi registrati solo sulla console?


8

Voglio eseguire RoboCopy che aggiornerà la console con progressi% ma non ingombra il file di registro con progressi%.

Il seguente comando RoboCopy eseguirà la copia desiderata e aggiungerà le informazioni di registrazione al file di registro.

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

Il problema è che il file di registro è ingombro di% di aggiornamenti di avanzamento. Pertanto ho bisogno di modificare il comando in questo:

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

Ora il problema è che non ricevo alcun% di aggiornamento sullo schermo.

Ho letto http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx alcune volte e non riesco a trovare uno o più switch di cui ho bisogno. Mi sto perdendo qualcosa o non è possibile ciò che voglio ottenere?


Devi usare solo strumenti integrati?
Ciao,

Risposte:


2

Dato che nessuno ha risposto a questa domanda per così tanto tempo, ho pensato di suggerire un paio di cose.

Se si utilizzano script batch, non dovrebbe essere troppo difficile utilizzare sed per rimuovere le informazioni sull'avanzamento indesiderate dal file di registro. Non ne ho abbastanza esperienza per darti una soluzione utilizzandola senza passare un po 'di tempo su di essa.

C'è una sola versione del file .exe di seda UnxUtils (con un po 'più aggiornata versione nell'aggiornamento zip).

Un'altra opzione sarebbe quella di utilizzare XXCOPY invece di Robocopy. Ha un numero davvero ridicolo di interruttori (oltre 230), che ti consente di fare quello che vuoi. Devi passare un'intera serata a scegliere quali vuoi usare. Ha anche una finestra di dialogo sull'avanzamento della GUI, se preferisci usarla.

Esiste una versione gratuita per uso personale, che non può essere utilizzata per gli script automatici, poiché è necessario seguire interattivamente i messaggi, a differenza della versione a pagamento.

XXCOPY

Un'altra alternativa è RichCopy , che ha una GUI che può utilizzare per scegliere le opzioni. Può quindi fornirti la riga di comando dell'operazione da utilizzare negli script batch.

RichCopy


1

Ri: robocopy e 'rumore' dei progressi registrati

Soluzione: usa solo / TEE e lascia che registri il 'rumore', altrimenti non vedrai alcun progresso. Quindi utilizzare sed, come prima suggerito per pulire il file di registro come segue:

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

rimuovere .bak se non si desidera un backup non corretto. sed è disponibile per Windows qui e funziona benissimo, almeno per l'uso su linea singola *.

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

* (i comandi sed negli script unix bash / cshell sono spesso distribuiti su più righe, aggiungendo maggiore flessibilità e complessità .. non mi aspetto che quel tipo di comandi sed funzioni con gli script cmd di Windows, ma sed è ancora utile sotto Windows).


+1 Non c'è un modo per stdoutpassare seddirettamente attraverso ?
paradroid,

1
ovviamente puoi passare attraverso sed, che rimuoverà comunque le informazioni sullo stato di avanzamento dal display della console e probabilmente anche il file di registro ...
Mac

Certo, ma ho pensato che forse il teecomando potesse essere usato al posto dell'interruttore di Robocopy /TEE, ma mi sono appena reso conto che è parte di TCC/LEun CMDcomando standard e non lo fa . È disponibile in PowerShellperò.
paradroid,

in realtà .. scrive ancora il disordine di avanzamento nel file di registro! Quindi è esattamente l'opposto di ciò che si desidera. Ho appena provato con: robocopy. tst /log:n:\tst.log / tee | sed "s / \ x0d. * \ x0d. * $ //"
Mac

tee è disponibile anche da gnuwin32 .. ma avrebbe lo stesso problema;) gnuwin32.sourceforge.net/packages/coreutils.htm
Mac
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.