プロが教えるわが家の防犯対策術!

Windowsのbatファイルから、exeファイルを起動しようと思っております。
(batファイルは私が新規作成、exeは既存の物で詳しい仕様不明)

exeファイル側の成功/失敗によって、batの後続処理を分けたいです。
戻り値はbatのERRORLEVEL変数に格納されるという情報を見つけたのですが、
exeで「失敗したときはbatに戻り値を返す」という処理を入れていなくても
それが出来るのでしょうか?

A 回答 (1件)

exe側での対応が必要です。




C言語、わかりますか?
main関数の最後に return 0; と書いたりしますけど、この 0 がERRORLEVELとして使われます。

bat等で使われることを考慮しているプログラムだと、
if (エラー) { return 1 ; }
みたいな感じで、「失敗したら0でない値を返して終了」というexeになるように作られています。

ですが、考慮してないものでは
・失敗しても0(正常)になる
・成功しても 0でないもの(失敗)が帰る
・実行毎に変化して一定ではない
となることがあります。


また、あなたの考える「成功/失敗」と、「exeファイル側の成功/失敗」が違うこともあります。
 例) 検索で、該当項目が0件だった場合
  ・ある利用者の考え: 見つからないのは「失敗」
  ・exe制作者の考え: 該当項目が無ければ0件になるのが正しい状態なので「成功」


ですから、ERRORLEVELを使うためには、exeがどんなERRORLEVELを返すのかを確認する必要があります。
exeファイルのマニュアルを調べるとか、ソースコードを解析するとか、です。

 exe実行
 echo %ERRORLEVEL%
というbatで、実験することはできますが、それだけでは保証はされません。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。
ERRORLEVELに返却される~という話は色々なところで見かけましたが
なかなかexe側の情報が見つからず困惑しておりました。
(自動で返却してくれるなんてそんな便利なこと無いだろと…)
exeの方がどうなっているか、調べてみます!

お礼日時:2017/09/03 11:50

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A