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