• ベストアンサー

バッチのcallの使い方で、これって合ってるか教えてください。

下記のようなバッチスクリプトを作りました。 ************************************** FC AAA.txt BBB.txt if not %errorlevel% EQU 0 call :ERR-SEC 10 FC CCC.txt DDD.txt if not %errorlevel% EQU 0 call :ERR-SEC 11 exit 0 :ERR-SEC echo 終了コード:[%1] > EEE.log exit %1 ************************************** 気にしているのはcallの使い方です。 どこの処理でエラーが起きたかあとでわかるように、 callでエラーセクションをパラメータを渡して呼び出し、 引数をログ出力と終了値に使用しています。 callは本来、2回終わらせる必要があると参考書に記載されていたのですが、 このバッチではexitで無理やり終わらせています。 このような使い方は問題ないでしょうか? なにか気になる点があればぜひ教えてください。 よろしくお願いします。 ちなみにOSはWindows2003Serverです。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.1

コマンドプロンプトから起動すると、exitでコマンドプロンプトごと終了します。また、他のスクリプトからcallで呼ぶとexitで全体が終了します。 そういう使い方をしないのなら問題ないです。 gotoにする手もありますね。 FC AAA.txt BBB.txt if not %errorlevel% EQU 0 set CC=10&goto ERR-SEC FC CCC.txt DDD.txt if not %errorlevel% EQU 0 set CC=11&goto ERR-SEC goto :EOF :ERR-SEC echo 終了コード:[%CC%] > EEE.log goto :EOF

その他の回答 (2)

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.3

> このバッチではexitで無理やり終わらせています。 > このような使い方は問題ないでしょうか? あれ?問題あると思ったから質問したのだと思ってた^^; No.1で言われているとおり、 他のスクリプトからそのスクリプトを呼んだときに そのスクリプトが呼び出し元のスクリプトまで終了させるので、 それを問題と思うかどうかですね。

  • Gotthold
  • ベストアンサー率47% (396/832)
回答No.2

exit ではなく exit /b を使ってください。

関連するQ&A