仅记录 robocopy 输出中的更改

仅记录 robocopy 输出中的更改

我找不到一种方法来仅记录 robocopy 执行输出中的更改,即:那些被视为新文件、新目录、较新的文件、额外文件或额外目录的更改。

我现在的默认输出包含复制过程中考虑的所有目录(已触及或未触及)的列表。我想隐藏未触及的目录。

帮助似乎没有显示出实现此目的的方法。

答案1

如果你仔细看看文档或者robocopy /?,您将找到/NDL开关。

指定不记录目录名称。

这样,您将不会输出目录的单个名称(可以将其视为一种进度标记)。但“文件名”将包含路径。

例如,您将获得以下输出:

        *EXTRA Dir        -1    C:\Temp\test\
          *EXTRA File                  0        C:\Temp\test\test.txt
100%        Newer                     72        C:\Temp\test.txt

答案2

使用/NDL并不是完美的解决方案,因为它也会隐藏任何目录更改(新的、更改的、删除的)。

您可以使用它grep进行一些过滤。这也不是一个完美的解决方案,但它可能比它更好,/NDL因为它会列出目录更改。基本上它会删除以 17 个空格开头的行。

grep -v -E '^\s{17}' robocopy.log > changes.log
  • -v逆匹配(跳过匹配)
  • ^\s{17}以 17 个空格开头

注意:您必须安装grep(Git Bash 附带)。该{17}语法不适用于findstr

相关内容