我正在使用PowerShell脚本通过robocopy进行备份,它非常棒,但我希望在复制时只显示进度百分比,而不是所有其他信息。其他信息会使命令窗口混乱,我希望它简洁明了,以便轻松查看备份的总体进度。这个可行吗?
/np /nfl
所以与AndyGeek的答案中的5个参数一起,这些参数是
/njh /njs /ndl /nc /ns
,你将得到以下结果,并且静音:
ROBOCOPY [源] [目标] /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.
我使用以下选项完成了它:
/njh /njs /ndl /nc /ns
注意文件名仍然会显示,但这对我没问题。
有关 robocopy
的更多信息,请访问https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/robocopy
/mir
或/purge
,额外的文件仍然会被记录。找不到关闭它的方法。 - bbodenmillerrobocopy src dest > nul
如果您仍然需要一些信息但只想剥离输出的部分,请使用R.Koene答案中的参数。> log:nul
,结果得到一个空的日志文件。而> nul
则按预期工作。 - Ivan Yanlog
文件实际上并不是真正的空。它只是将数据保存到一个备用流中,这个流对于资源管理器而言是不可见的,但在磁盘上确实存在。(你可以使用 dir /r
命令来查看它。)@IvanYan 是正确的,> nul
是丢弃输出内容的正确命令。 - jmbpiano在PowerShell中,我喜欢使用:
robocopy src dest | Out-Null
它避免了需要记住所有命令行开关。
/PURGE
。 - Kevin GhadyaniRobocopy有时会打印空行,即使它什么也没有做。我使用如下命令过滤掉空行:
robocopy /NDL /NJH /NJS /NP /NS /NC %fromDir% %toDir% %filenames% | findstr /r /v "^$"
如果您希望完全无声,可通过将输出重定向到文件(并可选择稍后删除该文件)来实现。
Robocopy src dest > output.log
del output.log
Out-Null
,可以使命令不产生任何输出。 - orad我不确定是否正确,但我在Gitlab中使用它并且它有效:
robocopy <src> <dst> *.dll *.exe *.bat /E; $LastExitCode
> null无法在引号中使用。它将> null视为批处理文件名。
robocopy没有输出!!!
以下是新的批处理文件:
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
null
不起作用,因为它应该是nul
。 - undefined没有必要先重定向到一个文件,然后再删除它。 尝试一下:
Robocopy src dest > null
nul
(而不是null
),在Windows上这是一个类似于Linux上的/dev/null
的特殊保留文件名。但是,这并没有回答OP的问题。 - Cameron Tacklind
/nfl /ndl
时,不需要使用/nc /ns
。 - Vojtěch Dohnal