J'ai un problème avec mon fichier batch. Il construit plusieurs programmes automatiquement en faisant quelque chose comme ceci:Quitter le script batch depuis l'intérieur d'une fonction
- fixé des drapeaux de compilation
- run 'gmake all'
- appel de la fonction "vérifier le niveau d'erreur" et si errorlevel 1, sortie
il ressemble à ceci:
set FLAG=1
...
gmake all
call :interactive_check
set OTHERFLAG=1
...
gmake all
call :interactive_check
il y a 6 ou 7 d'entre eux (et i t pourrait grandir). J'ai donc fait une fonction pour vérifier errorlevel au lieu de copier/coller à chaque étape. Le problème est le suivant: le contrôle d'erreur est faite par une fonction:
: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
Maintenant, quand vous le lancez, le exit /B 1
sort simplement la fonction, mais pas le fichier batch. Savez-vous comment quitter le fichier batch complet sans avoir à copier/coller mon "if errorlevel 1 .." à chaque étape?
Vous ne pouvez pas. Il suffit de remplacer 'call: interactive_check' par' if errorlevel 1 goto error'. Il n'y a pas beaucoup de différence entre copier-coller ancien ou dernier. :) – atzz
Got it, résolu le problème avec cela et ça fonctionne bien, merci! – Gui13