Windows管道传输时将STDERR和STDOUT重定向到同一程序

问题描述 投票:1回答:1

MSDNthis question给出了将Windows cmd stdout和stderr重定向到单个文件的示例:

dir file.xxx 1> output.msg 2>&1

当STDERR和STDOUT通过管道传递到另一个程序时,我正在寻求相同的操作。这是没有STDERR重定向的用法:

net use Z: \\server\share  |  TimeStampPipe.exe >> logfile.txt 

我希望将“ net use”的STDERR和STDOUT用管道传输到TimeStampPipe.exe。我不在乎TimeStampPipe.exe中的STDERR。 2>&1哪里指示适用于网络使用而不适用于TimeStampPipe.exe?我尝试过此

net use Z: \\server\share  1> 2>&1 TimeStampPipe.exe >> logfile.txt 

并获得2>&1 was unexpected at this time.

我尝试过此

net use Z: \\server\share  1| 2|&1 TimeStampPipe.exe >> logfile.txt 

并获得& was unexpected at this time.

配管时有办法吗?我可以尝试类似的东西:

net use Z: \\server\share  1> tempfile.txt 2>&1
type tempfile.txt | TimeStampPipe.exe >> logfile.txt 
del tempfile.txt

是否有更简洁的方法?

编辑:我尝试了@compo的建议以单独使用2>&1。我尝试了以下三种形式:

net use Z: \\server\share  | 2>&1 TimeStampPipe.exe >> logfile.txt 
net use Z: \\server\share  |  TimeStampPipe.exe 2>&1 >> logfile.txt 
net use Z: \\server\share  | TimeStampPipe.exe >> logfile.txt 2>&1

在每种情况下,都正确地输出了stdout,但是任何来自网络使用的stderr输出都流向了屏幕,而不是通过管道。

windows batch-file cmd stdout stderr
1个回答
0
投票

正如其他人已经在评论中指出的那样,您必须这样做:

© www.soinside.com 2019 - 2024. All rights reserved.