2016-06-13 7 views
0

ベンダーから受け取ったWindowsのexeファイルの出力をリダイレクトしようとしています。私はこのファイルへのコードを持っていないし、ベンダーは少し混乱しているので、難読化のために申し訳ありません。Windowsの実行ファイルのstdoutまたはstderrのリダイレクトに失敗する

出力とエラーを一緒に連結しようとしているわけではありません。リダイレクトすることはできません。

私はPowerShellを使用してそれを実行した場合、私は標準出力をリダイレクトしようとすると、私は次のように取得するには、次

PS C:\test>.\vendor.exe 
output 
output 
output 
error 
error 
output 

を取得します。

ただし、output.txtが作成されている間は空のファイルです。それは長さ0のように見えます。

どのようにリダイレクトを達成するためのアイデア、またはexeでリダイレクトを防ぐことが可能な場合は?

+0

おそらく原因:アプリケーションにバグ(または機能)があります。もしそうなら、それを修正するためにベンダーに依頼する以外に、あなたができることはあまりありません。最後の手段として、ReadConsoleOutput API関数を使用してコンソールの内容を取得することができます。かなり面倒です。 –

答えて

1

標準誤差を標準出力にリダイレクトする必要があります。

てみてください:ここでは

.\vendor.exe 2>&1 > output.txt 

2>&1は "stdoutに標準エラー出力をリダイレクトする" と言うと> output.txtは "OUTPUT.TXTする標準出力をリダイレクトする" と言います。

または:ここ

.\vendor.exe *> output.txt 

は、*> output.txtは "OUTPUT.TXTためにすべてをリダイレクトします。" と言います

1 Success output 
    2 Errors 
    3 Warning messages 
    4 Verbose output 
    5 Debug messages 
    6 Informational messages 

Get-Help about_Redirectionを見る

主な違いは、6つの出力ストリームがあることです。

+0

こんにちは、あなたの努力のおかげで、これは答えではありません。私は2つの出力を連結しようとしていません - 私はリダイレクトすることができません。私は単純なバットファイルを書いてみて、それらを実行しようとしました、そして、私はそれらをリダイレクトすることができます - それはEXEに明白であるようです。私は、それをもっと明確にしようとする問題を編集しました。 – neilpmas

+0

@neilpmasだからどちらの方法も使えますか?私は '*>'で捕らえられていないものは見ていません。これは通常、プログラムが明示的にコンソールに書き込んでいるときにもキャプチャします。 '$ x =。\ vendor.exe'のようなことをすると、' $ x'の値はどうなるのですか? –

+0

それはpowershellのバージョン2なので、私は*>ビットを殺すと思います。 '$ x =。\ vendor.exe'を実行してecho $ xで値を取得しようとしましたが、空白でした。他のウィンドウ項目でリダイレクトを使用できます。バッチファイルは、このexeファイルではありません。 – neilpmas

関連する問題