如何让 robocopy 的进度仅记录到控制台?

如何让 robocopy 的进度仅记录到控制台?

我想运行 RoboCopy,它将使用 % 进度更新控制台,但不会使日志文件变得杂乱。

以下 RoboCopy 命令将执行所需的复制并将日志信息附加到日志文件。

RoboCopy <source> <dest> /log+:<log file> /tee

问题是日志文件中充斥着 % 进度更新。因此我需要将命令更改为:

RoboCopy <source> <dest> /log+:<log file> /tee /np

现在的问题是我没有在屏幕上得到任何 % 进度更新。

我读了http://technet.microsoft.com/en-us/library/cc733145%28WS.10%29.aspx我已经试过好几次了,但还是找不到我需要的开关。我是不是漏掉了什么,还是我想要实现的目标无法实现?

答案1

由于很长时间没有人回答这个问题,我想我应该提出几点建议。

如果你使用批处理脚本,那么使用起来应该不会太困难sed从日志文件中删除不需要的进度信息。不过,我对此还不够熟悉,因此无法在不花太多时间的情况下为您提供解决方案。

有一个 .exe 文件sed版本Unx工具类(更新 zip 中包含稍微更新一点的版本)。

另一个选择是使用复制而不是Robocopy。它有开关数量多得可笑(超过 230 个),它允许您做任何您想做的事情。您必须花一整个晚上来选择要使用哪些。如果您愿意,它还有一个 GUI 进度对话框。

有一个供个人使用的免费版本,但不能用于自动脚本编写,因为您需要以交互方式按照提示进行操作,这与付费版本不同。

复制

另一种选择是富文本复制,它有一个 GUI,可用于选择选项。然后它可以为您提供操作的命令行,供您在批处理脚本中使用。

富文本复制

答案2

解决方案:只使用 /TEE 并让它记录“噪音”,否则您将看不到任何进展。然后使用 sed,如第一个建议的那样清理日志文件,如下所示:

 sed -i.bak "s/\x0d.\*\x0d.\*$//" logfile.txt

.bak如果您不想要未修复的备份,请删除。sed适用于此处的 Windows,并且运行良好,至少对于单行*使用而言。

http://gnuwin32.sourceforge.net

sedUnixbash/cshell脚本中的命令通常分布在多行中,增加了更多的灵活性和复杂性。我不指望这些类型的sed命令能与 Windows 脚本一起使用cmd,但sed在 Windows 下仍然有用。

相关内容