У меня проблема с моим командным файлом. Он строит несколько программ, автоматически делая что-то вроде этого:Выйти из скрипта изнутри функции
- установить некоторые флаги компиляции
- беги «gmake все»
- вызов функции «проверить уровень ошибки», и если Равен 1, выход
Так это выглядит следующим образом:
set FLAG=1
...
gmake all
call :interactive_check
set OTHERFLAG=1
...
gmake all
call :interactive_check
Там в 6 или 7 из них (и я t может расти). Поэтому я сделал функцию проверки уровня ошибок, а не копирования/вставки его на каждом шаге. Проблема заключается в следующем: проверка ошибок производится с помощью функции:
:interactive_check
if errorlevel 1 (
echo.
echo /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
echo Error in compilation process... exiting
echo /!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\/!\
echo.
cd %root_dir%
exit /B 1
) ELSE (
echo.Continuing to next step
)
goto:eof
Теперь, при запуске его, exit /B 1
просто выходит из функции, но не пакетный файл.
Вы знаете, как выйти из полного пакетного файла без необходимости копировать/вставлять мой «if errorlevel 1 ..» на каждом шагу?
Вы не можете. Просто замените 'call: interactive_check' на' if errorlevel 1 goto error'. Существует не так много различий между копированием в прошлом или последним. :) – atzz
Получил, решил проблему с этим, и он отлично работает, спасибо! – Gui13