コマンドプロンプト(MS-DOS)で標準エラー出力をパイプするには?

コマンドプロンプトでの標準エラー出力をリダイレクトする方法は、過去の下記の記事を書いた。

コマンドプロンプト(MS-DOS)で標準エラー出力もリダイレクトするには? – KUMA TYPE

標準エラー出力をパイプする必要があったので、いくつか試してみたけどうまくいかなかったので調べてみた。

参考:

下記のようにすれば、program1.exeの標準出力と標準エラー出力をprogram2.exeにパイプすることができる。

>program1.exe 2>&1 | program2.exe

標準エラー出力のみをパイプしたい時は、多分下記のようにすればできる。

>program1.exe 2>&1 > NUL | program2.exe

 

一応普通の標準出力のパイプも書いておく。

>program1.exe | program2.exe

 

ついでに、標準出力と標準エラー出力を別々のファイルにリダイレクトする方法。

>program1.exe 1> out1.txt 2>out2.txt

 

perlでテストする時のサンプルとも言えないようなサンプル。標準出力で「stdout」標準エラー出力で「stderr」と出力する。
std.pl

print STDOUT "stdout\n";
print STDERR "stderr\n";

 

コマンドプロンプト上で、perlスクリプトで、パイプを受け取る時、下のようなスクリプトを書いたとして。

test.pl

while(<STDIN>){
    print $_;
}

program1.exe | test.pl だとSTDINで受け取れないけど、
program1.exe | perl test.pl だとSTDINで受け取れるのはなんでなんだぜ?
やっぱりtest.plはあくまでもスクリプトで、perl.exeが受け取らないといけないってことかな?

掘り下げてないけどそれだけ覚て置くためにメモっておこう。

(Visited 1,212 times, 1 visits today)

タグ :