batにおけるerrorlevelの挙動について
Q&A
Closed
解決したいこと
Windwos上でとあるbatファイルを作成しています。
コマンド実行後、errorlevelを使用してエラー処理を実装していますが、
コマンドプロンプト上から当該batを呼び出す場合は、errorlevelは想定通り動作します。
(直前のコマンド結果がエラーの場合はerrorlevelに0以外の数値が入る)
しかし、エクスプローラ上からダブルクリック実行にて当該batを呼び出す場合、
errorlevelは0のままとなります。
何故上述の様な動作の違いが発生するのでしょうか。
また、ダブルクリック実行で想定通り動作させるにはどうすればよいでしょうか。
発生している問題・エラー
for %%s in (`dir C:\aaaaaaaaa`) do (
echo "for文内のerrorlevel:%errorlevel%"
)
echo "for文後のerrorlevel:%errorlevel%"
dir C:\aaaaaaaaaは単に存在しないパスです。
自分で試したこと
プロンプト呼び出しの場合は、for文内、for文直後共にerrorlevelは1となります。
ダブルクリック実行した場合は、for文内、for文直後共にerrorlevelは0となります。
ダブルクリック時、管理者実行はしていませんので、実行パスはプロンプト呼び出しと同じ場所(batファイルが格納されている階層)で実行しています。
呼び出し方で結果が異なる理由が分からず、ご教示頂ければと思います。