Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/logging/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Logging 在批处理文件作业上生成可管理的日志文件_Logging_Batch File_Batch Processing - Fatal编程技术网

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

Logging 在批处理文件作业上生成可管理的日志文件,logging,batch-file,batch-processing,Logging,Batch File,Batch Processing,我正在通过计划每小时运行的批处理文件运行robocopy作业。我正在使用以下开关: Robocopy\servername\share D:\somedir/E/R:5/Log+:D:\Logs\CopyLog.txt 它忠实地工作了很长时间,但今天早上遇到了困难。我去查看日志文件,惊讶地发现它已经增长到了280MB 然后我的问题是如何更改批处理文件以编写更多可管理的日志文件?我认为在一段时间内追加报告是有意义的。ie:CopyLog_201103.txt将是2011年3月的日志文件 我相当擅长

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

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

它忠实地工作了很长时间,但今天早上遇到了困难。我去查看日志文件,惊讶地发现它已经增长到了280MB

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

我相当擅长使用高级编程语言,但在我成长的过程中,命令行编程早已不复存在。我肯定正在学习对更基本的计算机概念有一个坚定理解的价值


如果您有任何建议/建议,我们将不胜感激,请提前感谢。

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

for /f "usebackq tokens=1-3 delims=/" %%d in ('%date%') do (
    set day=%%d
    set month=%%e
    set year=%%f
)
(警告:特定于区域设置。)


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

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

for /f "usebackq tokens=1-3 delims=/" %%d in ('%date%') do (
    set day=%%d
    set month=%%e
    set year=%%f
)
(警告:特定于区域设置。)

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

丑陋的方式(不推荐,但Windows 2000及更早版本需要): 注意:这假设ISO-8601是系统上的短日期格式。如果不是这样,则需要从
%date%
的子字符串构造日期

现场验证方式: 丑陋的方式(不推荐,但Windows 2000及更早版本需要): 注意:这假设ISO-8601是系统上的短日期格式。如果不是这样,则需要从
%date%
的子字符串构造日期

现场验证方式:
@柯蒂斯:不过要小心;您不应该在需要在您不控制的机器上运行的生产代码中使用该方法,因为您需要知道该方法的日期格式。@joey:同意。有人指出这个命令是另一种选择:
wmicos get localdatetime
。(编辑:哈!我在下面的答案中看到了。)是的;-)我仍然需要围绕它编写一个有用的脚本,但是对于一次性的快速和脏的方法,它工作得相当好(注意它使用UTC,尽管我认为在日志文件中是理所当然的)。当我发现这实际上是以一种不特定的方式获取当前日期和时间的方法时,我非常高兴(直到那时我才知道在批处理文件中是可能的)。@Curtis:不过要小心;您不应该在需要在您不控制的机器上运行的生产代码中使用该方法,因为您需要知道该方法的日期格式。@joey:同意。有人指出这个命令是另一种选择:
wmicos get localdatetime
。(编辑:哈!我在下面的答案中看到了。)是的;-)我仍然需要围绕它编写一个有用的脚本,但是对于一次性的快速和脏的方法,它工作得相当好(注意它使用UTC,尽管我认为在日志文件中是理所当然的)。当我发现以一种不特定的方式获取当前日期和时间(在此之前我都不知道在批处理文件中可以这样做)实际上是一件很开心的事情。
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%