我有一个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行的末尾有第二次重定向。
感谢。