我正在运行robocopy进程,并按如下方式生成日志:
robocopy "\\server1\reports" "c:\temp" /LOG+:"c:\scripts\logs\robolog-reports.txt"
日志文件创建正常。有没有办法限制日志文件的文件大小,理想情况下滚动日志,以便只保存最新的XX行或XX字节?我想在一个动作(robocopy)中完成所有操作,并且有最后几天的robocopy活动。
由于
答案 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),可以使日志文件增长得更慢: