Come posso rendere robocopy silenzioso nella riga di comando tranne che per i progressi?


105

Sto usando Robocopy per eseguire backup con uno script PowerShell ed è davvero fantastico, tranne per il fatto che mi piacerebbe che mostrasse solo la percentuale di avanzamento mentre copia e non tutte le altre informazioni.

Le altre informazioni ingombrano la finestra di comando, che vorrei pulire e semplice in modo che sia facile vedere lo stato di avanzamento generale del backup.

È possibile?

Grazie, Andrew

Risposte:


192

Ho aggiunto i seguenti 2 parametri: /np /nfl

Quindi insieme ai 5 parametri dalla AndyGeek'srisposta, che sono /njh /njs /ndl /nc /nsi seguenti ed è silenzioso:

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.

2
È ancora visualizzato un messaggio "100%".
— Scott Chu

13
Questo stampa ancora una singola riga vuota che è visibile nei file batch.
— wqw

7
/nc /nsnon è necessario quando /nfl /ndlè specificato.
— Vojtěch Dohnal

3
@wqw, aggiungi semplicemente un> NUL all'EOL e la riga vuota è cronologia.
— Herb

2
@ScottChu Viene stampato al 100% quando si utilizza l'opzione / mt. Immagino che dovrai decidere se vuoi il multithreading o nessun% s mostrato
— Pagnotta

40

L'ho fatto utilizzando le seguenti opzioni:

/njh /njs /ndl /nc /ns

Nota che il nome del file viene ancora visualizzato, ma per me va bene.

Per ulteriori informazioni su robocopy, visitare http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx


3
/ nfl per sopprimere il nome del file
— xagyg

12
Viene visualizzato se si utilizza /miro se /purgei file aggiuntivi sono ancora registrati. Non riesco a trovare un modo per disattivarlo.
— bbodenmiller

1
nota che con robocopy la barra di avanzamento è solo% per file, non mostra l'avanzamento con il numero complessivo di byte copiati rispetto al totale /% di quello.
— barlop

Molto interessante l'apprezzamento di @bbodenmiller ... Molto fastidioso registrare questi file ...
— toscanelli

18

Se non vuoi alcun output, questo è il modo più semplice:

robocopy src dest > nul

Se hai ancora bisogno di alcune informazioni e vuoi rimuovere solo parti dell'output, usa i parametri dalla R.Koene'srisposta.


5
Provo > log:nulsotto win8.1 x64, c'è un file di registro vuoto. > nulfunziona come previsto.
— Ivan Yan

1
Il logfile "vuoto" che questo genera non è nemmeno veramente vuoto. Sta solo salvando i dati in un flusso alternativo che è invisibile a Explorer, ma molto ancora presente sul disco. (Puoi controllare usando il dir /rcomando per mostrarlo.) @IvanYan è corretto, > nulè il comando corretto per eliminare completamente l'output.
— jmbpiano

16

In PowerShell, mi piace usare:

robocopy src dest | Out-Null

Evita di dover ricordare tutte le opzioni della riga di comando.


Quando si esegue questa operazione, ha immediatamente interrotto il comando senza preavviso. Stavo usando /PURGE.
— Sawtaytoes

Out-Null non dovrebbe avere effetto sull'esecuzione del comando robocopy. Reindirizza semplicemente il flusso di output. msdn.microsoft.com/en-us/powershell/reference/4.0/… Potresti provare a rimuovere Out-Null per vedere se l'output scartato offre qualche indizio su cosa sta succedendo.
— Aaron Tribou

2

Una soluzione alternativa, se vuoi che sia assolutamente silenzioso, è reindirizzare l'output su un file (e facoltativamente eliminarlo in seguito).

Robocopy src dest > output.log
del output.log

6
inoltre> NUL butta via semplicemente l'output, nessun file di cui preoccuparsi.
— Sellorio

1
o eseguire il pipe Out-Nullin PowerShell
— orad

2

robocopy tende anche a stampare righe vuote anche se non fa nulla. Sto filtrando le righe vuote usando un comando come questo:

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

0

Il> null non funziona tra virgolette. Vede il> null come nome del file batch.

Il robocopy nessun output ha funzionato !!!

Ecco il nuovo file batch:

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

-1

Non è necessario reindirizzare a un file ed eliminarlo in un secondo momento. Provare:

Robocopy src dest > null 

2
Questo crea un file nulle vi scrive il registro. Lo calma nella riga di comando al costo delle scritture sull'unità di archiviazione.
— Sawtaytoes
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.