Wie kann ich Robocopy in der Befehlszeile außer für den Fortschritt stumm schalten?


105

Ich verwende Robocopy, um Backups mit einem PowerShell-Skript zu erstellen, und es ist ziemlich beeindruckend, außer dass ich möchte, dass nur der prozentuale Fortschritt beim Kopieren angezeigt wird und nicht alle anderen Informationen.

Die anderen Informationen überladen das Befehlsfenster, das ich bereinigen und einfach machen würde, damit Sie den Gesamtfortschritt der Sicherung leicht sehen können.

Ist das möglich?

Danke, Andrew

Antworten:


192

Ich habe die folgenden 2 Parameter hinzugefügt: /np /nfl

Zusammen mit den 5 Parametern aus der AndyGeek'sAntwort erhalten /njh /njs /ndl /nc /nsSie also Folgendes und es ist still:

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
Es wird immer noch die Meldung "100%" angezeigt.
Scott Chu

13
Dadurch wird immer noch eine einzelne leere Zeile gedruckt, die in Batchdateien erkennbar ist.
wqw

7
/nc /nsist nicht erforderlich, wenn /nfl /ndlangegeben.
Vojtěch Dohnal

3
@wqw, füge einfach ein> NUL an der EOL hinzu und die leere Zeile ist Geschichte.
Herb

2
@ScottChu Dies druckt 100%, wenn Sie den Schalter / mt verwenden. Ich denke, Sie müssen sich entscheiden, ob Sie Multithreading möchten oder keine% s angezeigt werden
Loaf

39

Ich habe es mit den folgenden Optionen gemacht:

/njh /njs /ndl /nc /ns

Beachten Sie, dass der Dateiname weiterhin angezeigt wird, aber das ist in Ordnung für mich.

Weitere Informationen zu Robocopy finden Sie unter http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx


3
/ nfl, um Dateinamen zu unterdrücken
xagyg

12
Erscheint, wenn Sie verwenden /miroder /purgedie zusätzlichen Dateien noch protokolliert sind. Ich kann keinen Weg finden, das auszuschalten.
bbodenmiller

1
Beachten Sie, dass bei Robocopy der Fortschrittsbalken nur% pro Datei ist und keinen Fortschritt mit der Gesamtzahl der Bytes anzeigt, die aus der Summe /% davon kopiert wurden.
Barlop

Sehr interessante @bbodenmiller Wertschätzung ... Sehr nervige Protokollierung dieser Dateien ...
toscanelli

18

Wenn Sie überhaupt keine Ausgabe wünschen, ist dies der einfachste Weg:

robocopy src dest > nul

Wenn Sie noch einige Informationen benötigen und nur Teile der Ausgabe entfernen möchten, verwenden Sie die Parameter aus der R.Koene'sAntwort.


5
Ich > log:nulteste unter win8.1 x64, es gibt eine leere Protokolldatei. > nulfunktioniert wie erwartet.
Ivan Yan

1
Die "leere" logDatei, die dadurch generiert wird, ist nicht einmal wirklich leer. Es werden lediglich die Daten in einem alternativen Stream gespeichert, der für den Explorer unsichtbar ist, aber noch immer auf der Festplatte vorhanden ist. (Sie können dies überprüfen, indem Sie den dir /rBefehl verwenden, um es anzuzeigen.) @IvanYan ist korrekt, > nulist der richtige Befehl, um die Ausgabe vollständig zu verwerfen.
jmbpiano

16

In PowerShell verwende ich gerne:

robocopy src dest | Out-Null

Sie müssen sich nicht alle Befehlszeilenoptionen merken.


Dabei wurde der Befehl sofort ohne Warnung beendet. Ich habe benutzt /PURGE.
Sawtaytoes

Out-Null sollte keine Auswirkung auf die Ausführung des Robocopy-Befehls haben. Es leitet einfach den Ausgabestream um. msdn.microsoft.com/en-us/powershell/reference/4.0/… Sie können versuchen, Out-Null zu entfernen, um festzustellen , ob die verworfene Ausgabe einen Hinweis darauf bietet, was passiert.
Aaron Tribou

2

Eine Problemumgehung besteht darin, die Ausgabe in eine Datei umzuleiten (und sie später optional zu löschen), wenn Sie möchten, dass sie absolut stumm ist.

Robocopy src dest > output.log
del output.log

6
auch> NUL wirft nur die Ausgabe weg, keine Datei, über die man sich Sorgen machen muss.
Sellorio

1
oder Pipe zu Out-Nullin PowerShell
orad

2

Robocopy neigt auch dazu, leere Zeilen zu drucken, selbst wenn es nichts tut. Ich filtere leere Zeilen mit dem folgenden Befehl weg:

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

0

Die> null funktioniert in den Anführungszeichen nicht. Es sieht die> null als Batch-Dateinamen.

Die Robokopie ohne Ausgabe hat funktioniert !!!

Hier ist die neue Batch-Datei:

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

Sie müssen nicht zu einer Datei umleiten und später löschen. Versuchen:

Robocopy src dest > null 

2
Dadurch wird eine Datei erstellt nullund das Protokoll in diese Datei geschrieben . Es beruhigt es in der Befehlszeile auf Kosten der Schreibvorgänge des Speicherlaufwerks.
Sawtaytoes
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.