19

我想在使用 Robocopy Log 时避免所有现有文件名和目标文件夹的详细信息。

只想显示复制的文件列表及其详细信息。

因此,我可以通过避免日志中现有的文件详细信息来节省 robocopy 日志文件的大小。

有没有办法避免它,请帮忙

我看不到任何选项

日志记录选项:::

             /L :: List only - don't copy, timestamp or delete any files.
             /X :: report all eXtra files, not just those selected.
             /V :: produce Verbose output, showing skipped files.
            /TS :: include source file Time Stamps in the output.
            /FP :: include Full Pathname of files in the output.
         /BYTES :: Print sizes as bytes.

            /NS :: No Size - don't log file sizes.
            /NC :: No Class - don't log file classes.
           /NFL :: No File List - don't log file names.
           /NDL :: No Directory List - don't log directory names.

            /NP :: No Progress - don't display percentage copied.
           /ETA :: show Estimated Time of Arrival of copied files.

      /LOG:file :: output status to LOG file (overwrite existing log).
     /LOG+:file :: output status to LOG file (append to existing log).

   /UNILOG:file :: output status to LOG file as UNICODE (overwrite existing log).
  /UNILOG+:file :: output status to LOG file as UNICODE (append to existing log).

           /TEE :: output to console window, as well as the log file.

           /NJH :: No Job Header.
           /NJS :: No Job Summary.

       /UNICODE :: output status as UNICODE.
4

7 回答 7

25

默认情况下robocopy,仅记录文件夹和不存在/修改(即复制)的文件。

          New Dir          2    C:\Temp\a\
100%        New File                   0        bar.txt
100%        New File                   0        foo.txt

您可以使用开关禁止记录文件夹/ndl(在这种情况下,复制的文件将与其完整路径一起列出)。

100%        New File                   0        C:\Temp\a\bar.txt
100%        New File                   0        C:\Temp\a\foo.txt

只修改foo.txt并重新运行robocopy a b /ndl,你会得到

100%        Newer                      3        C:\Temp\a\foo.txt

从输出中添加/njh/njs删除标题和摘要。添加/np以删除进度指示(输出行开头的百分比值)。添加/xx以删除额外文件的指示(仅存在于目标文件夹中但不存在于源文件夹中的文件):

C:\Temp>robocopy a b /njh /njs /ndl /np

          *EXTRA File                  0        C:\Temp\b\baz.txt
            New File                   0        C:\Temp\a\bar.txt
            New File                   0        C:\Temp\a\foo.txt

C:\Temp>echo "foo" >a\bar.txt

C:\Temp>robocopy a b /njh /njs /ndl /np /l

          *EXTRA File                  0        C:\Temp\b\baz.txt
            Newer                      3        C:\Temp\a\bar.txt

C:\Temp>robocopy a b /njh /njs /ndl /np /xx /l

            Newer                      8        C:\Temp\a\bar.txt
于 2013-04-19T19:18:09.953 回答
6

你应该使用/NFL /NDL. 他们将删除所有不属于 robocopy 操作的目录和文件列表。

官方参考

可读参考

于 2014-04-21T10:56:08.927 回答
3

看起来您不能基于此 TechNet 发布,因为即使/v输出仍会显示跳过的文件。

我能想到的唯一选项是在日志上运行一个脚本,删除跳过的行。

于 2013-04-19T19:05:56.450 回答
2

最后我找不到任何开关,选择以删除现有文件详细信息行的方式编写脚本,并在每个 robocopy 完成后使用相同的文件名设置文件

#To remove all Lines with string "Extra File"
 (Get-Content $LogPath)-replace '(.*Extra File).+' | Set-Content $LogPath 

#To remove all empty lines 
(Get-Content $LogPath) | Where-Object {$_ -match '\S'} | Set-Content $LogPath  

我在日志文件中为现有文件详细信息行所做的操作以“Extra File”字符串开头,因此我删除了所有这些行。但是行空间仍然存在。所以我使用另一个命令来删除所有空行。

请贡献,任何人都有简单的方法

于 2013-04-24T16:37:30.007 回答
1

我认为这可能有效: robocopy sourceDir targetDir /njh /njs /ndl /np | 查找 /v "*额外文件"

因此,只需使用 /V 将输出通过管道传输到“查找”,以排除包含指定文本“*Extra File”的行。

于 2015-06-29T08:17:17.570 回答
1

我已经看到这/XX也避免了删除目标文件夹中的 EXTRA 文件,因此它不会记录额外的文件信息。上面有人已经说过/XX否定该/MIR选项。

于 2018-03-27T14:53:30.187 回答
0

试图消除噪音;使用robocopy /xx,它不会显示已经在目标文件夹中的文件。

于 2017-12-26T10:16:46.340 回答