windows - 如何使用 wintee 仅重定向 STDERR?

标签 windows batch-file cmd io-redirection

我目前正在使用wintee记录测试脚本的结果消息。该命令如下所示:

test_name.bat [parameters] 2>&1 | wtee log.txt

但是,我只想将 STDERR 存档到文件中,同时仍将 STDOUT 和 STDERR 显示到控制台。问题源于 wintee 的限制:它似乎只 fork STDIN、STDOUT 和输入文件。

这就是我正在尝试做的事情:

  1. 将 STDOUT 重定向到流 3(未使用的流)
  2. 将 STDERR 重定向到 STDOUT
  3. 将流 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/

相关文章:

c# - 什么决定了 C++ 中的字符编码

windows - PST复制批处理文件添加进度条

windows - 如何防止 Rust std::process:Command 将 .exe 相对路径插入参数?

sql - PL/SQL Oracle 目录

windows - 如何使用 FOR 循环分配超过 26 个变量?

windows - bat/cmd 文件不返回

linux - 安装 debian 后 windows 7 无法启动

.net - 如何检查是否安装了 .NET Framework

c - 为什么编译后的代码在 linux 的 windows 中创建损坏的文件工作正常

windows - 如何创建启动 Cygwin 并跟踪特定文件的桌面快捷方式?