※ ChatGPTを利用し、要約された質問です(原文:bat サブルーチンのERRORLEVELについて)
バッチのサブルーチンのERRORLEVELについて
このQ&Aのポイント
バッチのサブルーチン内でERRORLEVELを返す方法と、親ルーチンとのERRORLEVELの共有方法について質問です。
サブルーチン内でERRORLEVELを返すコマンドを実行したい場合、親ルーチンとERRORLEVELを共有したくない場合は、どのような方法があるのでしょうか?
例えば、1.batではMSG1が見つからない場合にERRORLEVELが1になりますが、親ルーチンでのERRORLEVELも1になってしまいます。このような場合に、親ルーチンでのERRORLEVELを共有せずに値を保持したい場合は、どのようにすれば良いのでしょうか?
bat サブルーチンのERRORLEVELについて
バッチのサブルーチンのERRORLEVELについて質問です。
サブルーチン内でERRORLEVELを返すコマンドを実行したいのですが、
親ルーチンにそのERRORLEVELを共有したくない場合、何か方法はありますか?
============================================================
[1.bat]
SET MSG1="NOTFOUND"
SET MSG2="found!"
echo %ERRORLEVEL%
FIND %MSG1% 2.bat
REM %ERRORLEVEL%は1に
echo %ERRORLEVEL%
CALL :LOG
echo %ERRORLEVEL%
FIND %MSG2% 2.bat
REM %ERRORLEVEL%は0に
echo %ERRORLEVEL%
CALL :LOG
echo %ERRORLEVEL%
REM %ERRORLEVEL%は0であって欲しいが0に
pause
EXIT 1
:LOG
FIND %MSG1% hogehoge.log
REM %ERRORLEVEL%は1に
============================================================
[2.bat]
found!
============================================================
[hogehoge.log]
空
============================================================
お礼
エラーレベルを保存しておいて 変数を戻り値とすることで ERRORLEVELが元の値に戻るのか…。 戻り値とERRORLEVELの関係に疎く思いつきませんでした。 ありがとうございます。