- ベストアンサー
ERRORLEVELの使い方
- ERRORLEVELの使い方について質問させて頂きます。環境変数 %ERRORLEVEL%は、DOSプロンプトであれ、チャイルドプロセス test1.bat であれ、とにかくエラーを保持するとのことですが、上記のスクリプトが、どんな時でも、本当に正しく動くのか、心配です。
- エラーを発生させるルーチンの直下でERRORLEVELを評価すべきであり、そのルーチンがチャイルドプロセスであれば、チャイルドプロセスの中で処理すべきです。
- スクリプトが分散されてしまい、見通しが悪くなってしまう可能性があるため、サジェスチョンをお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
単なる環境変数の一つと思った方が良いです。 ○○を期待する、というものではないです。あくまでプログラムの仕様です。 MSの決めた一覧なんてないと思います。少なくとも聞いたことはないです。 バッチなどで使用できるコマンドでも0やら5000やらが入り乱れています。 >環境変数 %ERRORLEVEL%は、DOSプロンプトであれ、 >チャイルドプロセス test1.bat であれ、とにかく >エラーを保持するとのことですが、 つまり、この前提が間違いの元です。
その他の回答 (1)
- EF_510
- ベストアンサー率50% (306/604)
ERRORLEVELそのものは単なる環境変数として評価されます。 誰かが変更しなければ直前の値を保持するだけで一連のスクリプト(プロセス)中で何処で設定されたかは考慮しません。 「別の世界」のエラーレベルはプロセスが異なりますので影響を受けません。(起動時から設定されているのであれば影響を受けますが) どちらにしろ、終了時にERRORLEVELを設定しないプログラムが存在するようなので厳密にエラーを判定できるわけではないようです。
補足
コメントありがとうございます。 ERRORLEVELの仕組みを理解しているわけではないのですが、色々実験をやってみて、 正常に終了した時--------------25 処理対象ファイルがない時--------26 シリアルポートが適切でない時----21 こんな感じでした。 そのプログラムの作成者が、意図してERRORLEVELを設定していないにしても 確かに、処理結果によって、値が変わっていました。 再現性はありますので、信じてよいのだろうとは思いますが、 原理を理解しておきたいと思います。 例えば、正常終了時の値は、作成者責任(デファオルは0) マイクロソフトが決めた一覧があって、その値を+-して、 具体的なERRORLEVELは、決まる(DOS側がコントロールする) 宜しくお願いいたします。
お礼
ありがとうございます。 確認して、使えるものは使うと言う考えで、やります。