J’écris un fichier batch qui valide quelques fichiers. Lorsque l’un des fichiers n’est pas valide, je souhaite que le script batch arrête et renvoie un code d’erreur> 0. Le code ci-dessous semble faire le travail, mais appeler “EXIT 2” ferme la fenêtre d’invite de commandes dans laquelle le script était exécuté.
:Validate SETLOCAL Validator %1 IF %ERRORLEVEL% GEQ 1 EXIT 2 ENDLOCAL
Une idée sur la façon de retourner un code d’erreur sans fermer l’invite de commande?
Pour obtenir de l’aide sur les invites de commande, utilisez les commandes /? option. Exit /?
montre:
Quitte le programme CMD.EXE (interpréteur de commandes) ou le script de lot en cours.
EXIT [/ B] [exitCode]
/ B spécifie de quitter le script de lot en cours au lieu de CMD.EXE. S’il est exécuté en dehors d’un script batch, il quittera CMD.EXE
exitCode spécifie un nombre numérique. si / B est spécifié, définit ERRORLEVEL ce nombre. Si vous quittez CMD.EXE, définit le code de sortie du processus avec ce numéro.
Alors tu veux
IF %ERRORLEVEL% GEQ 1 EXIT /B 2
Vous pouvez utiliser la commande pause
avant d’appeler exit.
Si vous n’aimez pas le message:
pause > nul
J’ai le même problème. Si vous écrivez un lot (script shell Windows). ‘ cmd ‘ devrait le faire pour vous. Cela ne quittera pas le lot et rest à l’invite de commande. Résolu mon problème. Par exemple: cd "\view\Flex Builder 3\gcc-mvn" set path="c:\view\jdk1.7.0_02\bin";"c:\view\apache-maven-3.0.5\bin";%path% mvn sonar:sonar cmd
doit restr à l’invite après l’exécution.