Cmd重定向输出

Cmd重定向输出,cmd,redirect,Cmd,Redirect,我想运行(在cmd中启动): 将输出重定向到屏幕和一个文件,我让它工作,但我也希望有一个完全独立的错误文件,但这些错误也需要显示在日志文件中 所以我得到了这个重定向正常输出:echo%test%1>>D:\Documenten\Bureaublad\test.txt 和2>&1添加错误 如果我添加2>>D:\Documenten\Bureaublad\test2.txt,错误不会显示在第一个文件中 这是我总共得到的: @echo off SET /P test=give input echo %

我想运行(在cmd中启动):

将输出重定向到屏幕和一个文件,我让它工作,但我也希望有一个完全独立的错误文件,但这些错误也需要显示在日志文件中

所以我得到了这个重定向正常输出:
echo%test%1>>D:\Documenten\Bureaublad\test.txt

2>&1
添加错误

如果我添加
2>>D:\Documenten\Bureaublad\test2.txt
,错误不会显示在第一个文件中

这是我总共得到的:

@echo off
SET /P test=give input
echo %test% 1>> D:\Documenten\Bureaublad\test.txt 2>> D:\Documenten\Bureaublad\test2.txt 2>>&1
pause

它可以工作,但只将输出放在文件中,而不放在屏幕上,并且不会将错误放在第一个和第二个文件中,只放在第一个文件中。

您不能按要求执行操作。给定的文件句柄(本例中为stderr)只能重定向一次。当在同一个命令上放置多个重定向时,最后一个规范获胜

没有办法将stderr发送到一个文件,然后以某种方式将其正确地合并到stdout流中——合并后的输出将被置乱。最好的方法是将stdout和stderr合并到一个流中,通过管道将其连接到tee将组合输出写入文件,然后使用另一个管道将输出通过FINDSTR传递,以某种方式仅过滤错误消息并重定向到其自己的文件。如果您不能通过内容识别错误消息,那么您就倒霉了

Tee不是批处理的标准命令,因此您需要第三方端口。或者您可以使用纯脚本,从XP开始在任何Windows机器上本机运行

为了演示,我假设您的每个错误消息都显示在一行上,并以单词
error:
开头。您必须调整搜索字符串以正确识别输出中的错误

yourCommand 2>&1 | tee.bat output.log | findstr "^Error:" >output.err

感谢您的帮助,但是有没有办法将其写入文件和屏幕,或者我运行时遇到了相同的问题?@Lenny-将输出写入屏幕时遇到了相同的问题。只需在我建议的解决方案中消除最终重定向。
yourCommand 2>&1 | tee.bat output.log | findstr "^Error:" >output.err