Windowsコマンドでバッチ処理を実行したとき、一瞬画面に表示されるエラーメッセージは標準出力でテキストに出力されません。例えば、OracleのSQLコマンドをWindowsバッチ処理で実行したときのエクスポートエラーがテキスト出力したメッセージの中に表示されていないといった事例です。
そのエラーメッセージをテキストファイルへ出力する方法を解説します。
Windowsバッチ処理のエラーメッセージをテキストファイルに出力する方法
バッチ処理の実行結果をテキストファイルに出力する方法として「 > 」(リダイレクト)が用いられます。これを「 2> 」(数字の2と>をつなげて入力)に変更すると、エラーメッセージがテキストファイルへ出力されるようになります。
C:¥test.bat 2> C:¥err.log
上記のように「test.bat」で実行したときに出力される「処理結果」や「エラーメッセージ」が「err.log」というテキストファイルへ出力されます。
実行例
下記メッセージは、OracleのSQLコマンドを定義したバッチ処理を実行した結果です。定義ミスで発生したエラーやOracle、正常な結果メッセージまですべての結果がテキストファイルに出力されるので、エラーコードを後で確認する等に利用できます。
– – – – –
サブディレクトリまたはファイル DBout は既に存在します。
サブディレクトリまたはファイル logs は既に存在します。
Export: Release 12.1.0.1.0 – Production on 木 1月 12 17:24:46 2017
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
EXP-00028: 書込み用のD:work_DBlogsAFTER_ExportBSEHLOG.logのオープンに失敗しました
EXP-00000: エラーが発生したためエクスポートを終了します。
Export: Release 12.1.0.1.0 – Production on 木 1月 12 17:24:46 2017
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
接続先: Oracle Database 12c Release 12.1.0.1.0 – 64bit Production
JA16SJISTILDEキャラクタ・セットおよびAL16UTF16 NCHARキャラクタ・セットでエクスポートを実行します
指定された表をエクスポートします… 従来型パス経由…
.. 表 BUIDCDMをエクスポート中 11行エクスポートされました。
エクスポートは警告なしで正常終了しました。
Export: Release 12.1.0.1.0 – Production on 木 1月 12 17:24:46 2017
Copyright (c) 1982, 2013, Oracle and/or its affiliates. All rights reserved.
スポンサーリンク
Windowsコマンドの「標準出力」と「標準エラー出力」
先に説明した通り、バッチ処理の実行結果をテキストファイルに出力する方法として「 > 」(リダイレクト)が用いられます。「 > 」で出力される出力を「標準出力」、前述の「 2> 」で出力される正常メッセージやエラーメッセージを「標準エラー出力」と言います。
標準出力の例は、以下の通りです。
C:¥test.bat > C:¥kekka.log
test.batに「dir /s」コマンドを定義して実行すると、以下の通り、dir /sコマンドの実行結果が出力されます。
実行例
C:¥test.bat > C:¥kekka.log
「kekka.log」をメモ帳で開くと、以下のようなdirコマンドの結果が格納されています。
C:tmp>dir /s
ドライブ C のボリューム ラベルがありません。
ボリューム シリアル番号は B82D-01CD です
C:tmp のディレクトリ
2017/02/11 15:52
2017/02/11 15:52
2017/02/11 15:52 0 kekka.log
2017/02/11 15:51 6 test.bat
2 個のファイル 6 バイト
ファイルの総数:
2 個のファイル 6 バイト
2 個のディレクトリ 223,640,846,336 バイトの空き領域