我在Windows调度程序中有一个任务,每分钟运行一个批处理文件。这个批处理文件svn更新了许多文件夹,然后运行一个perl脚本,该脚本会分叉到许多其他脚本上。
是否有命令输入批处理文件,以确保运行任务的所有cmd输出都将记录到日期/时间作为文件名的文件中? 例如如果程序在2014年1月1日12:00运行,它将保存为:1200-1-1-2014.log
答案 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甚至可以做管道吗?