我目前正在使用wintee记录测试脚本的结果消息。该命令如下所示:
test_name.bat [parameters] 2>&1 | wtee log.txt
但是,我只想将 STDERR 存档到文件中,同时仍将 STDOUT 和 STDERR 显示到控制台。问题源于 wintee 的限制:它似乎只 fork STDIN、STDOUT 和输入文件。
这就是我正在尝试做的事情:
- 将 STDOUT 重定向到流 3(未使用的流)
- 将 STDERR 重定向到 STDOUT
- 将流 3(重定向的 STDOUT)重定向到 STDERR
这样,控制台仍将显示两个流的消息,而 wintee 只会从(最初是)STDERR fork 消息。
但是,我不确定这是否可能,因为我对流重定向的理解很浅。我正在尝试查看是否可以使用中间的另一个流将 STDOUT 重定向到 STDERR:
echo Hello World! 3>&2 >3
但是,它没有打印任何内容。
我想要在 native 批处理中完成的任务是否可行(可选地借助其他工具)?如果是这样,我做错了什么?
最佳答案
Set Arg = WScript.Arguments
set WshShell = createObject("Wscript.Shell")
Set Inp = WScript.Stdin
Set Outp = Wscript.Stdout
On Error Resume Next
Set Fso = CreateObject("Scripting.FileSystemObject")
Set File = Fso.CreateTextFile(Arg(0), True)
If err.number <> 0 then
Outp.WriteLine "Error: " & err.number & " " & err.description & " from " & err.source
err.clear
wscript.exit
End If
Do Until Inp.AtEndOfStream
Line=Inp.readline
outp.writeline Line
File.WriteLine Line
Loop
这款 T 恤标准输出。将第 4 行更改为 Set Outp = Wscript.Stderr
将使其成为 Tee StdErr。
使用dir | cscript//nologo Tee.vbs
。
关于windows - 如何使用 wintee 仅重定向 STDERR?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39883681/