如果你这样做
ipconfig.exe 1> output.log 2>&1
这将把所有输出(stdout和stderr)指向“output.log”。
但是,如果您这样做(更改指定所需redirect的顺序)
ipconfig.exe 2>&1 1> output.log
这将不会达到将两个输出stream打印到“output.log”的预期效果,因为在这种情况下,“stderr”将被打印到控制台。
我怀疑这与“cmd”parsing命令的方式有关,这些命令根据指定redirect的顺序给出不同的含义。
如果是这样,语义规则是什么,他们在哪里logging?
我认为这是值得一提的事情,因为它可能会让人们挠头,试图弄清为什么他们的redirect不起作用,从而浪费了人们的时间。
重定向只是从左向右解析。 最初stdout
和stderr
指向控制台,因此,当您将stderr
重定向到stdout
当前在第二个示例中指向的位置时,您正在将stderr
指向控制台。 随后,您将stdout
重定向到一个文件。
这里的解释和例子对于进一步的参考很有帮助。