コマンドプロンプトでエラー番号を取得する方法と注意点

このQ&Aのポイント
  • バッチファイルを使用してコマンドを実行中に発生したエラーの番号を取得する方法について説明します。
  • ネットワークの電源が切れている場合や既に割り当てられたドライブ文字を使用している場合など、エラー番号を取得することで問題の回復が可能な場合があります。
  • 具体的なコマンドとエラー番号の取得方法について詳しく説明します。
回答を見る
  • ベストアンサー

コマンドプロンプトでエラー番号を取得できますか?

コマンドプロンプトでエラー番号を取得できますか? バッチファイルを使い、一連のコマンドを実行中にエラーが生じたとき、そのエラー番号の取得が可能でしょうか?具体的に処理したいのは、次のようなケースです。 Net Use Y: \\Landisk\Disk1 “” /User:Administrator を実行します。 この時処理したいエラーは主として次の2つです。 エラー番号 53:ネットワークの電源が切れているなど エラー番号 85:ドライブ文字“Y”が既に割り当てられているとき 最初の場合は、エラー終了します。次の場合は、次に進みYをそのまま使います。 実際のエラーは、これほど単純ではありませんが、エラー番号が取得できれば回復できるケースがあります。皆様のお知恵を貸してください。

質問者が選んだベストアンサー

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.2

バッチファイルの問題では無くバッチファイルから呼び出されるコマンド(プログラム)の問題のように思います。 コマンドがどのようなエラーを返してくるかによって次の処理を考えれば済むことでしょう。 場合によっては帰ってきた終了コードをファイルに書き込んで次の段階でその内容を読み返すのは如何ですか? あなたの力量なら考え方を提示すれば処理出来ると推察します。

Agusuke
質問者

お礼

回答、有難うございます。すっかり勘違いしていました。返って来るエラーコードは、コマンドプロンプトからではなく、プログラムからでしたね。年のせいでモウロクしたようです。

その他の回答 (1)

  • chie65535
  • ベストアンサー率43% (8521/19370)
回答No.1

バッチでは、起動したプログラムの終了コードを「ある数値かどうか」を判定できます。 ex. IF ERRORLEVEL EQU 102 GOTO ERR102 注:EQU演算子は一部のWINDOWSでは使用できません。 ただし、NETコマンドが「エラー番号と同一の終了コードを返す保証はない」ので、IFコマンドを使用出来るかどうかは保証できません。 つまり、コマンドによっては「成功したら0、失敗したら255を返し、エラーの中身が判らない」って事もありえる訳です。 ご質問のようなケースでは、Y:に必ず存在する筈のファイルの存在を確認するのが良いでしょう。 ex. IF NOT EXIST Y:\ GOTO NETERROR 注:Y:\に何らかのファイル(フォルダのみでは駄目)が無いと「存在しない」と言う判定になります。 こうすると、Y:\にファイルが存在しない場合、NETERRORとラベルの付いた行に移行します。

Agusuke
質問者

補足

回答に感謝しますが、ERRORLEVELは、エラー番号と違います。エラー番号は、かなり具体的なエラーを区別できますが、ERRORLEVELは、大雑把なくくりを示すだけで、私が例示した具体的なエラーを識別することはできません。 ご親切な記載にも感謝ですが、 if 文は承知しております。私が必要なのは、エラー番号を取得する子方法ですので、取得の方法が有れば教えてください。

関連するQ&A

  • VB2008 コマンドプロンプトの戻り値の取得

    A.exeを実行するとコマンドプロンプトが開きYと戻ってくるものがあるとします。 VB2008でShell("A.exe")と入力した時にこのYを取得することは可能でしょうか? この値から分岐処理を行いたいのですがそれも可能でしょうか?

  • コマンドプロンプトについて教えてください。

    コマンドプロンプトについて教えてください。 Msiexec.exe実行でのプログラムのアンインストール ↓ REG DELETEでレジストリの削除 ↓ CDでインストール対象のEXEファイルがあるところに移動してEXE実行 という一連の流れを1つのバッチファイルにしたいのですが、処理終了(インストールされていることを確認)すると、なぜか真ん中の処理のレジストリーキーの削除ができてません。 /fオプションで強制削除をつけているはずなのですが…ちなみに、単独で上から実行すると正しくレジストリーキーは削除されております。 何が原因か色々調べましたが、わかりません。処理の間に何か構文が必要なのでしょうか? なるべくバッチファイルの数を少なくしたいのですが、上記の3つの流れを満たすにはどうすればよいですか? 試しに一番最初のアンインストールの部分を、 Start /w Msiexec.exe~でやってみたのですが、それでもREGdeleteで消したいレジストリーキーはレジストリエディタで確認すると残ってました…

  • コマンドプロンプトのバッチファイル実行までの速度

    コマンドプロンプトのバッチファイルを作成したのですが このバッチファイルの実行するまでの処理速度を、コマンドプロンプト上に表示させたいのですが、どのようなコマンドを組めばよいのでしょうか? ちなみにバッチファイルの中身は、 @echo off start http://www.yahoo.co.jp です。よろしくおねがいします。

  • コマンドプロンプトが使えない...

    コマンドプロンプトでpingやipconfigをうつと,”内部コマンド,または外部コマンド操作可能なプログラムまたはバッチファイルとして認識されていません”とでてきて実行されません。いろいろ調べてみたのですが,結局わかりませんでした。おわかりになる方,何卒よろしくお願いします。

  • コマンドプロンプトの質問です。

    コマンドプロンプトの質問です。 EndLocalコマンドは無くても大丈夫なのですか? 図書などには、SetLocalコマンドの効果は、「バッチフィルの終わりまで」と書いてあります。と言うことは、これら2つのコマンドを入れ子で使う場合以外、褒められたことではありませんが、余り神経を使わなくてもよいのでしょうか?バッチファイルの先頭と最後に習慣的に記載していますが、 if の中に簡単に goto :EOF を書き、EndLocalコマンドを実行しないでバッチ処理を終わっています。終ると決めたら、EndLocalコマンドを実行後goto :EOFを実行するべきなのでしょうが、面倒なので横着をしています。 後で心配になり時々Setコマンドで調べてもローカル変数のつもりで設定した変数は残っていないので、大丈夫なのだろうと思っているのですが、気になります。 皆さんは、どうしていますか?

  • コマンドプロンプトで処理時間をカウント

    こんばんは。バッチ処理についてお教え下さい。 例えばあるexeを起動するバッチを1行で書くとします。 そのバッチを実行するとコマンドプロンプトが表示され起動しおわったらプロンプトは閉じます。 プロンプトが消えるまで、「.」を1こつづ増やしていきたいと思います。 Forループを使えばいいような気がするのですが、どのように文を書けばよいかわかりません。 やりたいことは、プロンプトが表示されている時、ユーザーは正しく動いているのかわかりません。 そこで「.」を1こづつ増やせばプログラムが動いていることがユーザーにわかると思うので、そのようにしたいです。 ご教授お願いいたします。

  • コマンドプロンプトで

    こんにちは。質問させてください。 いままでPHPをWEBブラウザの処理をMainに作成してきました。 簡単な文字列を整形するプログラムを作りました。 これは画面(ブラウザ)に表示するのではないので コマンドプロンプトで実行したいのですが、 単に c:\work>sample.php と実行すると、 エディタが開いてsample.phpの内容を表示するだけに なってしまい、特に処理が行われていません。 どのようにすればコマンドプロンプトから実行できるのでしょうか? C言語のように実行ファイルをコマンドプロンプトから 実行して処理させるようにしたいのですが・・・・ 質問自体が大きな間違いでしたらすみません。 どうかよろしくお願いいたします。

    • 締切済み
    • PHP
  • コマンドプロンプトにてPowerShell実行

    Windows10のアップデート後にWindowsが起動できなくなり、青い画面の 「システムの復元」を実行しようとすると「このドライブでシステムの保護を 有効にする必要があります」となります。 色々ネットで調べて、コマンドプロンプトよりPowerShellにて有効にできる とのことだったのですが、実行すると「'PowerShell'は内部コマンドまたは 外部コマンド、操作可能なプログラムまたはバッチファイルとして認識 されていません」となります。 コマンドプロンプトの画面の左上には「管理者」となっています。 しかし、コマンドプロンプト画面になったときに「このコマンドを処理する にはメモリリソースが足りません」となりました。 なぜPowerShellが実行できないのでしょうか? 実行する方法をご教授下さい。 よろしくお願い致します。

  • コマンドプロンプトのERRORLEVELを取得したい

    VBからコマンドプロンプトを呼び出し、 他のEXEを実行させ、 そのERRORLEVELを取得したいのですが、 どのようにすればよいでしょうか?

  • コマンドプロンプトの実行

    こんにちは 先日Ipconfigを教えていただきまして、コマンドプロンプトから実行しています。 手順としては 1.コマンドプロンプトを起動する 2.Ipconfigをパラメータつきで実行 3.Ipconfigを別パラメータつきで実行 4.コマンドプロンプトを終了 となります。 これを予めコマンドプロンプトで実行させたい内容を書き込んだファイルを作っておき、 そのファイルをデスクトップ上とかに置き、クリック実行してコマンドプロンプトの処理を実行させる、ということができないでしょうか。 以上、よろしくお願いいたします。