Comment puis-je rendre robocopy silencieux dans la ligne de commande, sauf pour la progression?


105

J'utilise robocopy pour faire des sauvegardes avec un script PowerShell, et c'est assez génial, sauf que j'aimerais qu'il n'affiche que le pourcentage de progression pendant qu'il copie et pas toutes les autres informations.

Les autres informations encombrent la fenêtre de commande, que je nettoierais et simplement pour qu'il soit facile de voir la progression globale de la sauvegarde.

Est-ce possible?

Merci, Andrew

Réponses:


192

J'ai ajouté les 2 paramètres suivants: /np /nfl

Donc, avec les 5 paramètres de la AndyGeek'sréponse, /njh /njs /ndl /nc /nsvous obtenez ce qui suit et c'est silencieux:

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
Il y a toujours un message «100%» affiché.
Scott Chu

13
Cela imprime toujours une seule ligne vide qui est visible dans les fichiers batch.
wqw

7
/nc /nsn'est pas nécessaire lorsque /nfl /ndlest spécifié.
Vojtěch Dohnal

3
@wqw, ajoutez simplement un> NUL à l'EOL, et la ligne vide est l'historique.
Herb

2
@ScottChu Ceci imprime 100% lorsque vous utilisez le commutateur / mt. Je suppose que vous devrez décider si vous voulez le multithread, ou aucun% s affiché
Pain

40

Je l'ai fait en utilisant les options suivantes:

/njh /njs /ndl /nc /ns

Notez que le nom du fichier s'affiche toujours, mais cela me convient.

Pour plus d'informations sur robocopy, accédez à http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx


3
/ nfl pour supprimer le nom de fichier
xagyg

12
Apparaît si vous utilisez /mirou si /purgeles fichiers supplémentaires sont toujours enregistrés. Impossible de trouver un moyen de désactiver cela.
bbodenmiller

1
notez qu'avec robocopy, la barre de progression n'est que de% par fichier, ne montre pas la progression avec le nombre total d'octets copiés sur le total /% de cela.
barlop le

Très intéressant appréciation @bbodenmiller ... Très ennuyeux journalisation de ces fichiers ...
toscanelli

18

Si vous ne voulez aucune sortie, c'est le moyen le plus simple:

robocopy src dest > nul

Si vous avez encore besoin d'informations et que vous ne souhaitez supprimer que des parties de la sortie, utilisez les paramètres de R.Koene'sanswer.


5
Je teste > log:nulsous win8.1 x64, il y a un fichier journal vide. > nulfonctionne comme prévu.
Ivan Yan

1
Le logfichier "vide" que cela génère n'est même pas vraiment vide. Il s'agit simplement d'enregistrer les données dans un flux alternatif invisible pour Explorer, mais toujours présent sur le disque. (Vous pouvez vérifier en utilisant la dir /rcommande pour l'afficher.) @IvanYan est correct, > nulest la commande correcte pour supprimer complètement la sortie.
jmbpiano

16

Dans PowerShell, j'aime utiliser:

robocopy src dest | Out-Null

Cela évite d'avoir à se souvenir de tous les commutateurs de ligne de commande.


En faisant cela, il a immédiatement tué la commande sans avertissement. J'utilisais /PURGE.
Sawtaytoes

Out-Null ne devrait avoir aucun effet sur l'exécution de la commande robocopy. Il redirige simplement le flux de sortie. msdn.microsoft.com/en-us/powershell/reference/4.0/... Vous pouvez essayer de supprimer Out-Null pour voir si la sortie rejetée offre un indice sur ce qui se passe.
Aaron Tribou

2

Une solution de contournement, si vous voulez qu'il soit absolument silencieux, consiste à rediriger la sortie vers un fichier (et éventuellement le supprimer plus tard).

Robocopy src dest > output.log
del output.log

6
aussi> NUL élimine simplement la sortie, aucun fichier à craindre.
Sellorio

1
ou pipe Out-Nulldans PowerShell
orad

2

robocopy a également tendance à imprimer des lignes vides même s'il ne fait rien. Je filtre les lignes vides en utilisant une commande comme celle-ci:

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

0

Le> null ne fonctionne pas dans les guillemets. Il voit le> null comme nom de fichier du lot.

La robocopy aucune sortie n'a fonctionné !!!

Voici le nouveau fichier 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

Il n'est pas nécessaire de rediriger vers un fichier et de le supprimer plus tard. Essayer:

Robocopy src dest > null 

2
Cela crée un fichier nullet y écrit le journal. Il le calme dans la ligne de commande au prix d'écritures sur le lecteur de stockage.
Sawtaytoes
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.