除了进度之外,如何在命令行中使机器人复制保持静默?

我用一个 PowerShell 脚本使用 robocopy 来做备份,这非常棒,除了我希望它只显示进度百分比,而不是显示所有其他信息。

其他信息混杂在命令窗口中,我会简单地清理这个窗口,这样就可以很容易地看到备份的整体进度。

这可能吗?

183718 次浏览

我使用了以下选项:

/njh /njs /ndl /nc /ns

请注意,文件名仍然显示,但对我来说没有问题。

有关机器人复制的更多信息,请转到 http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx

我添加了以下两个参数: /np /nfl

所以连同 AndyGeek's答案的5个参数,也就是 /njh /njs /ndl /nc /ns,你会得到以下结果,它是静音的:

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.

如果您希望它保持绝对静默,一种解决方案是将输出重定向到一个文件(以后可以选择删除它)。

Robocopy src dest > output.log
del output.log

如果你根本不想要任何输出,这是最简单的方法:

robocopy src dest > nul

如果您仍然需要一些信息,并且只想剥离部分输出,请使用 R.Koene's应答中的参数。

在 PowerShell 中,我喜欢使用:

robocopy src dest | Out-Null

它避免了必须记住所有的命令行开关。

机器复制也倾向于打印空行,即使它不做任何事情。我使用如下命令过滤掉空行:

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

没有必要重定向到一个文件并在以后删除它。 试试:

Robocopy src dest > null

引号中的 > null 不起作用,它将 > null 看作批处理文件名。

机器人复制没有输出工作! ! !

下面是新的批处理文件:

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

我不确定这是否正确,但我在 Gitlab 使用了这种方法,而且很有效:

robocopy <src> <dst> *.dll *.exe *.bat /E; $LastExitCode