使用robocopy截断日志

时间:2015-06-11 17:21:20

标签: batch-file robocopy

我正在运行robocopy进程,并按如下方式生成日志:

robocopy "\\server1\reports" "c:\temp" /LOG+:"c:\scripts\logs\robolog-reports.txt"

日志文件创建正常。有没有办法限制日志文件的文件大小,理想情况下滚动日志,以便只保存最新的XX行或XX字节?我想在一个动作(robocopy)中完成所有操作,并且有最后几天的robocopy活动。

由于

3 个答案:

答案 0 :(得分:4)

从文件中获取最后N行的过程称为 tail 。试试这个:

@echo off
setlocal

rem Update the robocopy report file
set "report=c:\scripts\logs\robolog-reports.txt"
robocopy "\\server1\reports" "c:\temp" /LOG+:"%report%"

rem Keep the last N lines in the report
set lines=300
for /F %%a in ('find /C /V "" ^< "%report%"') do set "lastLine=%%a"
if %lastLine% leq %lines% goto :EOF
set /A firstLine=lastLine-lines
more +%firstLine% "%report%" > tempFile.tmp
move /Y tempFile.tmp "%report%"

在一次机器人操作中无法直接执行此操作。

答案 1 :(得分:1)

有同样的问题,可以通过以下脚本解决:

this.

Robocopy需要由Windows sceduler运行,例如每60分钟运行一次,这是robocopy批处理文件中的最后一个命令,指向上述脚本“ robocopy_summary.bat日志文件名”

不是很聪明,但是做了我想看到的一切。

答案 2 :(得分:0)

我发现,由于默认情况下robocopy会重试1,000,000次,因此如果出现任何错误(通过用错误消息填充它),它会使Robocopy日志文件变得巨大。通过限制重试次数(例如使用开关/ r:3),可以使日志文件增长得更慢:

Why does robocopy retries 1000000 times?