在批处理文件作业上生成可管理的日志文件

时间:2011-03-16 17:43:03

标签: logging batch-file batch-processing

我正在通过计划每小时运行一次的批处理文件运行robocopy作业。我使用以下开关:

Robocopy \ servername \ share D:\ somedir / E / R:5 /Log+:D:\Logs\CopyLog.txt

它已经忠实地工作了很长时间但今天早上遇到了障碍。我去检查日志文件,并惊讶地发现它已经增长到只有280 Mb。

我的问题是如何更改我的批处理文件以编写更多可管理的日志文件?我认为附加报告的时间段是有意义的。即:CopyLog_201103.txt将是2011年3月的日志文件。

我非常擅长使用更高级别的编程语言,但是在我成长的过程中,命令行编程已经很久了。我肯定在学习如何深入了解更基本的计算机概念。

任何建议/意见都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:3)

丑陋的方式(不推荐,但在Windows 2000及更早版本中需要):

set MyDate=%DATE:-=%
set Filename=D:\Logs\CopyLog_%MyDate:~0,6%
robocopy ... /Log+:%Filename%

注意:这假定ISO-8601是您系统上的短日期格式。如果情况并非如此,那么您需要从%date%的子字符串构造日期。

防止语言环境的方式:

for /f "skip=1" %%d in ('wmic os get localdatetime') do if not defined MyDate set MyDate=%%d
set Filename=D:\Logs\CopyLog_%MyDate:~0,6%
robocopy ... /Log+:%Filename%

答案 1 :(得分:1)

您可以使用此cmd代码段获取日期,月份和年份:

for /f "usebackq tokens=1-3 delims=/" %%d in ('%date%') do (
    set day=%%d
    set month=%%e
    set year=%%f
)

(警告:特定于语言环境。)

现在您可以根据需要写入不同的日志文件。

相关问题