如何仅将进度记录到控制台进行自动复制?


8

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

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

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

问题在于日志文件中的进度更新%混乱。因此,我需要将命令更改为此:

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

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

我已经阅读了几遍http://technet.microsoft.com/zh-cn/library/cc733145%28WS.10%29.aspx,找不到我需要的开关。我是否缺少某些东西,或者我想实现的目标是不可能的?


您是否只需要使用内置工具?
Hello71

Answers:


2

由于没有人回答这么长时间,我想建议一些事情。

如果使用批处理脚本,则使用sed从日志文件中删除不需要的进度信息应该不会太困难。我对它没有足够的经验,可以在不花一些时间的情况下为您提供使用它的解决方案。

有一个单一的.exe文件版本sedUnxUtils(有一个稍微最新版本的更新拉链)。

另一种选择是使用XXCOPY而不是Robocopy。它的开关数量实在可笑(超过230个),可让您做任何想做的事情。您必须花一整个晚上选择要使用的食物。如果您愿意的话,它还有一个GUI进度对话框。

有一个供个人使用的免费版本,该版本不能用于自动脚本编写,因为您需要交互式地遵循提示,而不是付费版本。

XXCOPY

另一个选择是RichCopy,它具有一个GUI,可用于选择选项。然后,它可以为您提供用于批处理脚本的操作命令行。

RichCopy


1

回复:robocopy和记录的进度“噪音”

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

sed -i.bak“ s / \ x0d。* \ x0d。* $ //” logfile.txt

如果您不想要未修复的备份,请删除.bak。sed在此处可用于Windows,并且至少在单行中使用时工作正常。

http://gnuwin32.sourceforge.net/packages/sed.htm

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


+1没有办法直接stdout通过管道sed传输吗?
paradroid 2011年

1
当然,您可以通过sed进行管道传输,但是这会从控制台显示以及日志文件中删除进度信息...
Mac

当然,但是我认为也许tee可以使用该命令代替Robocopy的/TEE开关,但是我刚刚意识到它是命令的一部分,TCC/LE而不是标准CMD命令。PowerShell虽然可用。
paradroid 2011年

实际上..它仍然将进度混乱写入日志文件!所以与想要的东西正好相反。我刚刚测试过:robocopy。tst /log:n:\tst.log / tee | sed“ s / \ x0d。* \ x0d。* $ //”
Mac

tee也可以从gnuwin32 ..获得,但是会有相同的问题;)gnuwin32.sourceforge.net/packages/coreutils.htm
Mac
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.