Comment renvoyer un code d’erreur sans fermer la fenêtre d’invite de commandes?

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.