【问题标题】:is there a way to pipe STDERR and STDOUT to different programs?有没有办法将 STDERR 和 STDOUT 传送到不同的程序?
【发布时间】:2013-05-21 16:34:05
【问题描述】:

例如,我需要设置两个 tee 命令,其中一个从 STDOUT 读取,第二个从 STDERR 读取,并且都将控制台输出重定向到不同的文件。 Windows批处理文件中是否有可能?我知道如何将输出重定向到文件,但在这种情况下,它不会显示在屏幕上,或者如何组合两个流,但是如何独立地管道呢?

【问题讨论】:

  • 你在运行什么程序?是批处理文件吗?你能展示适当的部分吗?
  • 它是 Windows XP 中的一个批处理文件,我正在尝试将 stdout 重定向到 tee,将 stderr 重定向到 sed,然后通过管道传输到另一个 tee 副本。所以我可以在make时看到什么是错误,什么是正常输出。
  • 你能降低make的详细程度吗?
  • 我不想减少它,我想知道发生了什么。如果我需要减轻对特定错误的关注,我会在上面做 sed,例如重写长错误。

标签: batch-file stdout stderr tee


【解决方案1】:

您可以将 stdout 和 stderr 重定向到不同的文件,但仅此而已。

如果可以在每一行对 make 输出进行时间编码,则可以调整和重新交错两个文件。

【讨论】:

    【解决方案2】:

    您可以通过下一个技巧使用单独的程序处理 STDOUT 和 STDERR:

    (test | findstr /N /A:2A "^" ) 2>&1 1>&3 | findstr /N /A:4E "^"
    

    上一行显示了以绿色数字开头的 STDOUT 输出和以红色数字开头的 STDERR 输出。只需使用您的 TEE 程序来代替 findstr...

    如果您没有适合 Batch 文件的 TEE 程序,您可以在这里找到:Displaying Windows command prompt output and redirecting it to a file

    【讨论】:

      猜你喜欢
      • 2020-02-23
      • 2019-06-21
      • 2015-10-12
      • 1970-01-01
      • 1970-01-01
      • 2019-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多