【初心者向け】Windowsコマンドプロンプトでエラーログを表示・確認する方法|原因特定の第一歩!

プログラミング・IT

「バッチファイルが動かない…」
「コマンドは打てたけど、何が起きたのか分からない」
そんなとき、エラーログの確認はトラブルシューティングの第一歩です。

Windowsのコマンドプロンプト(CMD)には、標準出力標準エラー出力といったログの流れが存在します。

本記事では、初心者でも理解できるように、コマンドプロンプトでエラーログを表示・記録・活用する方法を丁寧に解説していきます。

スポンサーリンク

コマンドプロンプトでのエラーログとは?

Windowsのコマンドプロンプトでは、実行結果が「出力」として表示されます。

ですが、その中には通常の出力(標準出力)と、エラー時の出力(標準エラー出力)の2種類があります。

例)存在しないディレクトリに移動しようとした場合:

cd C:\not_exist_folder

表示されるエラー:

指定されたパスが見つかりません。

これはエラー出力(stderr)として扱われます。

多くの場合、エラーメッセージは赤色で表示されますが、コマンドプロンプトの設定によって異なる場合もあります。

この区別を理解することで、何が正常な出力で何がエラーなのかを判断できるようになります。

エラーメッセージをその場で表示する方法

通常、エラーは自動的に画面に表示されますが、一部のツールやバッチでは無視されることも。

明示的に確認したい場合は、次のようにすると安心です。

somecommand || echo コマンドが失敗しました

||は直前のコマンドが失敗した場合に続く処理を実行します。

これを利用すると、エラー発生時に独自のメッセージを表示できます。

例えば、存在しないコマンドを実行した場合:

notexist || echo このコマンドは存在しません

実行結果:

'notexist' は、内部コマンドまたは外部コマンド、操作可能なプログラムまたはバッチ ファイルとして認識されていません。
このコマンドは存在しません

これにより、エラーが発生したことを明確に確認できます。

エラーログをファイルに出力する方法

コマンドの出力やエラーをログファイルとして保存しておくと、あとから確認できて便利です。

基本的なリダイレクト

your_command > output.log 2> error.log
  • > は標準出力(stdout)をファイルに保存
  • 2> は標準エラー出力(stderr)を別ファイルに保存

例えば、コピーコマンドでエラーを発生させる場合:

copy nonexistent.txt destination.txt > success.log 2> error.log

この場合、error.logにエラーメッセージが保存されます。

両方の出力をまとめて記録する場合:

your_command > all.log 2>&1

これはエラーも通常出力もすべて all.log に保存します。

2>&1 は「エラー出力を標準出力と同じ場所に送る」という意味です。

現在の出力に追加する場合:

既存のログファイルに上書きではなく追加したい場合は、>> を使います:

your_command >> output.log 2>> error.log

これにより、ファイルの内容を消去せずに新たな出力が追加されます。

標準出力と標準エラー出力の違い

出力の種類リダイレクト記号意味
標準出力(stdout)>成功時など通常の出力
標準エラー(stderr)2>エラーや警告の出力

この違いを理解することで、トラブル原因を的確に切り分けられるようになります。

例えば、何かのプログラムやコマンドが実行されたとき:

  • 通常の処理結果は標準出力として出力される
  • エラーや警告は標準エラー出力として出力される

これらを別々のファイルに保存することで、成功した処理とエラーを分けて記録・確認できます。

応用:バッチファイルでエラーを記録する方法

バッチファイルでも以下のように記述すれば、エラーログが保存できます。

@echo off
echo 処理を開始します... > output.log
your_command >>output.log 2>error.log
if errorlevel 1 (
  echo %date% %time% - エラーが発生しました >> error.log
  echo 詳細はエラーログを確認してください
) else (
  echo 処理が成功しました
)

errorlevelは直前のコマンドの終了コードを確認する仕組みです。1以上ならエラーと判断されます。

より詳細なエラーログを作成する例:

@echo off
echo ===================================== > error.log
echo 実行日時: %date% %time% >> error.log
echo ===================================== >> error.log
echo. >> error.log

your_command > output.log 2>> error.log

if errorlevel 1 (
  echo エラーコード: %errorlevel% >> error.log
  echo 処理が失敗しました。error.logを確認してください。
) else (
  echo 処理が正常に完了しました。
)

これにより、いつ、どのようなエラーが発生したかを詳細に記録できます。

便利なコマンドとトラブル対処のヒント

エラー情報を取得する便利なコマンド

  • echo %ERRORLEVEL%:直前のコマンドの戻り値確認(0は成功、1以上はエラー)
  • pause:バッチファイルの終了を一時停止(エラーを見逃さない)
  • timeout /t 5:数秒待つ(ログ確認の余裕を持たせる)
  • findstr "エラー" error.log:ログファイルからエラーを含む行を検索

エラーメッセージを読みやすくする方法

  • find /c /v "" ファイル名:ファイルの行数をカウント(長いログの把握に便利)
  • more < error.log:長いログファイルを1画面ずつ表示
  • type error.log | findstr /i "エラー 失敗 警告":重要なキーワードだけを抽出

補足:エラー内容が意味不明なときは?

日本語のエラーメッセージはあいまいな場合も多いです。英語表示にすると検索性が上がることもあります:

chcp 437

※元に戻すには:

chcp 932

英語のエラーメッセージはインターネットでの検索結果が豊富で、解決策を見つけやすくなる利点があります。

よくあるエラーと対処法

「アクセスが拒否されました」

  • 原因:権限不足
  • 対処:コマンドプロンプトを「管理者として実行」する

「ファイルが見つかりません」

  • 原因:パスが間違っているか、ファイルが存在しない
  • 対処:dirコマンドでファイルの存在を確認、絶対パスで指定する

「システムは指定されたデバイスを認識できません」

  • 原因:存在しないドライブやデバイスへのアクセス
  • 対処:wmic logicaldisk get nameでドライブ一覧を確認

まとめ

Windowsのコマンドプロンプトでのエラーログ確認は、初心者にとってはやや敷居が高く感じられるかもしれません。

しかし、標準出力とエラー出力の違いを理解し、適切にログを保存・表示するテクニックを覚えれば、トラブル対応力は格段に上がります。

覚えておきたいコマンド

目的コマンド
標準出力をファイルに保存command > output.log
エラー出力をファイルに保存command 2> error.log
両方をまとめて保存command > all.log 2>&1
ファイルに追加で保存command >> log.txt 2>&1
エラーコードの確認echo %ERRORLEVEL%

「何が起きているのか分からない」状態を脱するために、今回紹介したコマンドをぜひ実践してみてください。問題の原因を特定し、解決への第一歩を踏み出しましょう。

エラーを見つけて対処することは、コマンドプロンプトを使いこなす上での重要なスキルです。繰り返し練習して、トラブルにも慌てず対応できるようになりましょう!

コメント

タイトルとURLをコピーしました