当子脚本也进行重定向时,将日志控制台输出到文件

时间:2014-02-19 18:09:55

标签: windows perl batch-file redirect

我有一个Windows批处理文件,它反过来调用Perl脚本

从批处理文件中我想将所有控制台输出记录(不重定向)到文件。我知道如果我从批处理文件中执行此操作,它通常也会捕获所有Perl输出,但遗憾的是Perl文件本身中还有一行也在重定向,这就是搞乱了。

在我的批处理文件中,我有这个:

getproject.pl %project% 2>&1 | tee output.log

在getproject.pl中有一行

$CVSOutput = `$CVSExePath\\cvs.exe $CVSOpts checkout -r $DesignTag -R $Design 2>&1`;

请注意该行末尾的2>&1重定向。

当我运行我的批处理文件时,我看到的最后一件事就是在CVS行之前的print语句。但是,Perl脚本实际上是在后台完成的,我可以从它修改的一些文件中看出来。

此外,Perl脚本通常以完成消息结束,并要求用户单击Return。当我从我的批处理文件中运行它时,在上面的行之后,当脚本出现停止时,如果我按下回车键,那么我将其余的输出吐出来的速度非常快,就像它缓存了一堆控制台输出,然后跳到下一个用户输入,在收到之后,转储缓冲区。

我无法控制Perl文件,所以我希望有一些方法可以记录我的批处理文件的输出,这样它就会继续记录,尽管在CVS行的末尾有第二次重定向。

感谢。

0 个答案:

没有答案