Batch file 使用robocopy截断日志

Batch file 使用robocopy截断日志,batch-file,robocopy,Batch File,Robocopy,我正在运行robocopy进程,并生成如下日志: robocopy "\\server1\reports" "c:\temp" /LOG+:"c:\scripts\logs\robolog-reports.txt" 日志文件创建得很好。有没有办法限制日志文件的文件大小,最好是滚动日志,以便只保存最新的XX行或XX字节?我想在一个动作中完成这一切(robocopy),并完成最后几天的robocopy活动 谢谢从文件中获取最后N行的过程称为tail。试试这个: @echo off setlocal

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

robocopy "\\server1\reports" "c:\temp" /LOG+:"c:\scripts\logs\robolog-reports.txt"
日志文件创建得很好。有没有办法限制日志文件的文件大小,最好是滚动日志,以便只保存最新的XX行或XX字节?我想在一个动作中完成这一切(robocopy),并完成最后几天的robocopy活动


谢谢

从文件中获取最后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%"
@echo关闭
setlocal
rem更新robocopy报告文件
设置“report=c:\scripts\logs\robolog reports.txt”
机器人复制“\\server1\reports”“c:\temp”/LOG+:%report%
rem保留报告中的最后N行
设置行数=300
对于('find/C/V”“^<%report%”中的/F%%a,请设置“lastLine=%%a”
如果%lastLine%leq%行%goto:EOF
设置/A第一行=最后一行
更多+%firstLine%%report%>tempFile.tmp
移动/Y tempFile.tmp“%report%”

无法在一个robocopy操作中直接执行此操作。

如果有相同的问题,请使用以下脚本解决此问题:

echo off
chcp 1252
type %1| find "Gestartet:"  > robocopy_summary.log
type %1| find "Quelle :"    >> robocopy_summary.log
type %1| find "Ziel :"      >> robocopy_summary.log
type %1| find "Optionen:"  >> robocopy_summary.log
echo "-----------------------------------------------------------------------------" >> robocopy_summary.log
type %1| find "Insgesamt"  >> robocopy_summary.log
type %1| find "Verzeich.:" >> robocopy_summary.log
type %1| find "Dateien:"   >> robocopy_summary.log
type %1| find "Bytes"      >> robocopy_summary.log
type %1| find "Zeiten"     >> robocopy_summary.log
type %1| find "Geschwindigkeit:" >> robocopy_summary.log
type %1| find "Beendet:"   >> robocopy_summary.log
echo "-----------------------------------------------------------------------------" >> robocopy_summary.log
Robocopy需要由windows sceduler运行,比如每60分钟运行一次,Robocopy批处理文件中指向上述脚本“Robocopy_summary.bat logfilename”的最后一个命令


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

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


谢谢。工作是一种享受。