...特别
proc2 -> stdout
/
proc1
\
proc3 -> stdout
我的'proc1'有一些输出,我想传递给'proc2'和'proc3'。
我不想保存'proc1'的输出并将[作为输入]传递给另外两个进程'proc2'和'proc3'。
有很多关于'tee'的讨论,我找到了'wtee'。
唉,以下不起作用:
proc1 | wtee (proc2 -i - <other arguments>) (proc3 -i - <other arguments>)
注意:' - i - '被传入'proc2'和'proc3',这样每个进程都知道输入来自哪里(stdout)。
我有办法在Windows中尝试做什么吗?
也许传递给每个过程的论据是为什么这两个不起作用?
我最好[还是坚持]写一个程序来做这个?
答案 0 :(得分:0)
我没有对此进行过测试,但您应该可以使用命名管道执行此类操作。你编写了一个名为splitter.vbs
的VBscript,它读取它的stdin并写入两个命名管道,然后启动你的另外两个进程,告诉他们从管道读取。
proc1 | cscript /nologo splitter.vbs
proc2 -i \\.\pipe\p1
proc3 -i \\.\pipe\p2
根据您是否希望程序在新窗口中启动,您可以启动3个命令提示符窗口并在每个窗口中运行一个,或者使用START /B
重新使用单个命令提示符窗口
splitter.vbs
看起来像这样:
Set fso = CreateObject ("Scripting.FileSystemObject")
Set p1 = fs.CreateTextFile("\\.\pipe\p1”, True)
Set p2 = fs.CreateTextFile("\\.\pipe\p2”, True)
Do While Not WScript.StdIn.AtEndOfStream
Line = WScript.StdIn.ReadLine()
p1.WriteLine(Line)
p2.WriteLine(Line)
Loop
答案 1 :(得分:0)
我通过使自己的管道阅读器/服务器类似于this解决了这个问题,除了服务器可以输出到它选择的多个客户端。