批处理文件的日志cmd输出由任务调度程序运行,并在文件名中保存日期/时间

时间:2014-06-10 14:21:00

标签: windows batch-file logging cmd

我在Windows调度程序中有一个任务,每分钟运行一个批处理文件。这个批处理文件svn更新了许多文件夹,然后运行一个perl脚本,该脚本会分叉到许多其他脚本上。

是否有命令输入批处理文件,以确保运行任务的所有cmd输出都将记录到日期/时间作为文件名的文件中? 例如如果程序在2014年1月1日12:00运行,它将保存为:1200-1-1-2014.log

2 个答案:

答案 0 :(得分:1)

在批处理文件中,您可以添加以下内容:

setlocal
@For /F "tokens=2,3,4 delims=/ " %%A in ('Date /t') do @(
    Set Month=%%A
    Set Day=%%B
    Set Year=%%C
)
set Date=%Day%_%Month%_%Year%

perl [script name] >> [path to log]/%Date%.log

endlocal

我不确定' time'的语法。它的一部分,但这应该让你开始正确的道路。

修改:找到有关获取“时间”的更多信息。在这篇文章中:

How to get current datetime on Windows command line, in a suitable format for using in a filename?

答案 1 :(得分:0)

不是这样,但是使用CPAN上的excellent logging modules之一,您可以编写一个短文件管理器,通过记录器回显其输入,并为您完成时间戳。

否则,您需要使用IPC::Open3之类的东西来控制所有输出集合,然后在主程序中使用记录器。

Windows甚至可以做管道吗?