【FAQ_622】sd-sys-execで連続実行時のエラー制御
sd-sys-execコマンドで2つのバッチファイルを順番に実行する設定にした場合、1つ目のバッチでエラーが発生し正常終了しなかった(errorlevelが0以外)ときに、2つ目のバッチを実行せずエラーとして扱うにはどのような設定が必要でしょうか。
バッチファイル側で戻り値を返すようにすることで制御できます。例えば以下のようにバッチファイル内でexit /b %ERRORLEVEL%を記述して戻り値を返します。
foo.bat
@echo off
echo foo
exit /b %ERRORLEVEL%
そのうえで、LISP側では次のように記述することで、戻り値が0のときのみ次のバッチを実行し、それ以外はエラー表示にできます。
(if (= (oli:sd-sys-exec "foo.bat") 0) (oli:sd-sys-exec "bar.bat") (display "abort"))
foo.bat
@echo off
echo foo
exit /b %ERRORLEVEL%
そのうえで、LISP側では次のように記述することで、戻り値が0のときのみ次のバッチを実行し、それ以外はエラー表示にできます。
(if (= (oli:sd-sys-exec "foo.bat") 0) (oli:sd-sys-exec "bar.bat") (display "abort"))