標準出力と標準エラーを入れ替えられるか?
???意味不明???
例えば、
(hoge.cmd | clip.exe) 2>&1 | messagebox.exe
と書けば、標準出力はクリップボードに送られて、
標準エラーがメッセージボックスに出ます。
これを逆にしようと、
(hoge.cmd | messagebox.exe) 2>&1 | clip.exe
とすると、今度は、標準出力のメッセージボックスを閉じるまで、
標準エラーがクリップボードに送られません。:-(
標準出力と標準エラーを別々にパイプに渡すことはできても、
このやり方では、標準出力が先、標準エラーが後になります。
これが変えられるか? という話です。
標準出力と標準エラーを入れ替えればよいのです。
(hoge.cmd 4>&2 2>&1 1>&4 | clip.exe) 2>&1 | messagebox.exe
と書けば、標準エラーはクリップボードに送られて、
標準出力がメッセージボックスに出ます。
リダイレクションの解釈は、()や|の外側から。同位なら左側から。
作業用に、4~9が使用可能です。3は、CONのようです。
ただし、サブシェルに引き継がれるのは0,1,2だけなので注意。
(hoge.cmd 2>&1 1>&4 | clip.exe) 4>&1 | messagebox.exe
でもよさそうなのに、うまく行かないのはそのせいです。
« JScript.NETでWin32APIを使う。 | トップページ | 標準出力と標準エラーを非同期にMessageBoxに出す。 »