我想在使用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.
答案 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
并且它不会显示目标文件夹中已有的文件。