避免在Robocopy日志中的目标文件夹的现有文件详细信息

时间:2013-04-19 15:53:37

标签: robocopy

我想在使用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.

7 个答案:

答案 0 :(得分:20)

默认情况下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

答案 1 :(得分:4)

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

答案 2 :(得分:2)

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

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

答案 3 :(得分:1)

最后我找不到任何开关,选择以这种方式编写脚本以删除现有的文件详细信息行,并在每个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”字符串开头,所以我删除了所有这些行。但线路空间仍然存在。所以我用另一个命令删除所有空行。

请提供帮助,任何人都可以轻松获得此方法

答案 4 :(得分:1)

我认为这可行: robocopy sourceDir targetDir / njh / njs / ndl / np | find / v“* Extra File”

所以只需用/ V将输出管道输出到“find”,以排除包含指定文本“* Extra File”的行。

答案 5 :(得分:1)

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

答案 6 :(得分:0)

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