有没有办法从内部重定向stdout和stderr批处理文件。
我在想像
set STDOUT=stdout.log
echo Some text
a.exe
b.exe
c.exe
Some text
和a.exe
,b.exe
和c.exe
的输出都会转到stdout.log
这可能吗?
答案 0 :(得分:29)
为整个命令集重定向一次比重定向(使用append)每个单独命令更有效。初始化重定向需要时间。对于一些重定向命令,它可能并不明显,但如果在具有多次迭代的循环中完成,则它可能变得非常重要。
一种方法是将整个重定向命令块括在括号内并重定向到括号外
>stdout.log 2>&1 (
echo Some text
a.exe
b.exe
c.exe
)
另一种选择是将命令放在子程序中并重定向CALL
call :redirect >stdout.log 2>&1
exit /b
:redirect
echo Some text
a.exe
b.exe
c.exe
exit /b
答案 1 :(得分:6)
是的,您需要重定向并将stdout附加到您的文件(1>> %STDOUT%
)并将stderr连接到stdout(2>&1
):
set STDOUT=stdout.log
echo Some text 1>> %STDOUT% 2>&1
a.exe 1>> %STDOUT% 2>&1
b.exe 1>> %STDOUT% 2>&1
c.exe 1>> %STDOUT% 2>&1
set STDOUT=stdout.log
set STDERR=stderr.log
echo Some text 1>> %STDOUT% 2>> %STDERR%
a.exe 1>> %STDOUT% 2>> %STDERR%
b.exe 1>> %STDOUT% 2>> %STDERR%
c.exe 1>> %STDOUT% 2>> %STDERR%