バッチファイルのstdoutとstderrを内部からリダイレクトする方法はありますか?バッチファイル内からstdoutとstderrをリダイレクト
私は両方Some text
、およびa.exe
、b.exe
とc.exe
の出力がstdout.log
に行くだろう
set STDOUT=stdout.log
echo Some text
a.exe
b.exe
c.exe
のようなものを想像していますこれは可能ですか?
バッチファイルのstdoutとstderrを内部からリダイレクトする方法はありますか?バッチファイル内からstdoutとstderrをリダイレクト
私は両方Some text
、およびa.exe
、b.exe
とc.exe
の出力がstdout.log
に行くだろう
set STDOUT=stdout.log
echo Some text
a.exe
b.exe
c.exe
のようなものを想像していますこれは可能ですか?
。リダイレクトを初期化するには時間がかかります。いくつかのリダイレクトされたコマンドでは気づかないかもしれませんが、反復回数の多いループで実行された場合はかなり重要になります。
一つの方法は、別のオプションは、サブルーチンであなたのコマンドを入れて、CALL
call :redirect >stdout.log 2>&1
exit /b
:redirect
echo Some text
a.exe
b.exe
c.exe
exit /b
はい、あなたはリダイレクトと追加標準出力をファイルに(1>> %STDOUT%
)とstdout(2>&1
)に標準エラー出力を接続する必要があります。
set STDOUT=stdout.log
echo Some text 1>> %STDOUT% 2>&1
a.exe 1>> %STDOUT% 2>&1
b.exe 1>> %STDOUT% 2>&1
c.exe 1>> %STDOUT% 2>&1
が正しくあなたの質問は必ずしも両方の標準エラー出力を書くことを意味するものではないことに注意@EitanT同じファイルにstdoutしてください。だから、完全を期すために、ここで区切りファイルへの書き込みのバージョンがあります:それは(APPENDで)個々のコマンドをリダイレクトするよりも、コマンドのコレクション全体に対して一度リダイレクトする方が効率的である
set STDOUT=stdout.log
set STDERR=stderr.log
echo Some text 1>> %STDOUT% 2>> %STDERR%
a.exe 1>> %STDOUT% 2>> %STDERR%
b.exe 1>> %STDOUT% 2>> %STDERR%
c.exe 1>> %STDOUT% 2>> %STDERR%
+をリダイレクトすることです
括弧内リダイレクトコマンドのブロック全体を囲み、括弧の外に
>stdout.log 2>&1 ( echo Some text a.exe b.exe c.exe )
をリダイレクトすることです1: 'stderr'を' stdout'にリダイレクトする必要はありません。もしそれらを別々のログにリダイレクトできればいいです。 –
もちろん、そうする必要はありませんが、私は彼が正確にやりたいと思っていました:_... stdout **と** stderrをリダイレクトする... – zb226
はい、両方をリダイレクトしますが、必ずしも同じではありませんロケーション。決して気にしないで、私はちょうどニックピッキングしています... –
ログファイル名を変数に入れる方法は何ですか? – domih