252) コマンド実行結果のログ保存方法について教えてください。 にけ。 2003/05/22(木) 17:24 |
|
いつも参考にさせていただいております、ニケと申します。 初めて投稿させて頂きます。 一つのバッチファイル内に複数のコマンドを記録し、実行した内容と結果を一つのファイルに吐き出す方法を探しております。 <例> RENAME.BAT REN A B REN C D CTL_RENAME.BAT RENAME.BAT > RENAME.LOG 実行はCTL_RENAMEから行えば出来るかと思ったのですが、コマンドは全てRENAME.LOGに出力されますが、エラーが起こったときなどの結果は画面に表示されてしまいました。 ファイルが見つからない、構文エラーなどの結果ログも同じファイルに記録されるようにしたいのですが、なにか方法はありますでしょうか。 もしくは複数のコマンドを実行した結果のみだけでも同じファイルに含めたいのですが…。 OSはWIN2000です。 なにかご存知の方、いらっしゃいましたらどうぞ宜しくお願いします。 |
|
254) Re:コマンド実行結果のログ保存方法について教えてください。(エラー出力のリダイレクト) YanaKen 2003/05/23(金) 09:08 |
|
ニケさん こんにちは。 >コマンドは全てRENAME.LOGに出力されますが、エラーが起こったときなどの結果は画面に表示されてしまいました。 >ファイルが見つからない、構文エラーなどの結果ログも同じファイルに記録されるようにしたいのですが、なにか方法はありますでしょうか。 多くのコマンドのエラーメッセージは、(通常の見た目は同じように見えますが)実際には「標準出力(Stdout)」ではなく「標準エラー出力(Stderr)」という別ルートに出力されます。 Windows95系だとこのエラー出力をファイル化するのはちょっと難しい(少なくとも標準的な方法はないらしい)んですが、NT系 (Windows2000)でのお話ということですので、その場合は方法があります。下記はWindows2000のヘルプ(コマンド・リファレンスの 「リダイレクト」の項)からの抜粋です。 --------- 不等号とアンパサンド (>&) は、既定の入出力ストリームのストリーム (stdout、stdin、stderr) を、別の既定の入出力ストリームにリダイレクトします。 たとえば、command >output_file 2>&1 は、command の処理中に発生したエラー メッセージを画面から標準ファイル出力にリダイレクトします。 ------ これだと意味がわかりにくいかもしれないですが、要するに、 dir *.x >result.txt 2>&1 ……のようにすると、dir *.x >result.txt だけではファイル化されない「ファイルが見つかりません。」のメッセージも同じファイルに落とすことができます。 YanaKen [個人homepage] [@pay導入について] [YanaKenの@pay窓口] |