De manière analogue à $?
sous Linux, existe-t-il un moyen d'obtenir le statut de sortie d'un programme dans un fichier de commandes Windows (.bat
)?
Dites par exemple le programme a un System.exit(0)
lors de l'exécution réussie, et un System.exit(1)
en cas d'échec, comment puis-je piéger ces valeurs de sortie dans un fichier .bat
?Comment obtenir le statut de sortie d'un programme Java dans le fichier de commandes Windows
Répondre
Utilisez %ERRORLEVEL%. N'aimes-tu pas comment les fichiers batch sont clairs et concis? :)
Quelque chose comme:
java Foo
set exitcode=%ERRORLEVEL%
echo %exitcode%
Il est important de faire de cette ligne suivante absolue du fichier batch, afin d'éviter le niveau d'erreur étant écrasé :)
Notez que si vous utilisez le
IF ERRORLEVEL number
« caractéristique » des fichiers par lots, cela signifie que « si le niveau d'erreur est supérieure ou égale à number
» - il ne se fonde pas sur l'égalité. J'ai été mordu par ce avant maintenant :)
La plupart des opérations de commande externes habituels retour ERRORLEVEL 0 et ce généralement (mais pas toujours) indique qu'aucune erreur n'a été rencontrée:
c:\> dir
...
c:\> echo %ERRORLEVEL%
Raymond Chen a un bon blog intitulé ERRORLEVEL is not %ERRORLEVEL%. Ça vaut le coup de vérifier.
Il convient également de noter que la commande REM, que la plupart des gens considèrent comme des commentaires, ne l'est vraiment pas. La commande REM est une commande nop qui réussit toujours. Après un REM, le niveau d'erreur est toujours 0. Alors
willalwaysfail.bat
REM unless you insert a comment after it
if errorlevel 1 goto fail
ne périra jamais ...
répondre à la plupart boulgour question de, mais complétant les autres réponses:
% pourERRORLEVEL% pour fonctionner, vous devez avoir les extensions de commande activées dans Windows (c'est la valeur par défaut).
Pour une séance:
cmd /E:on
ou de façon permanente dans le registre
HKEY_LOCAL_MACHINE\Software\Microsoft\Command Processor\EnableExtensions = 0x01
pour plus de détails:
cmd /?
[]]
- 1. Test de l'attribut de fichier dans le fichier de commandes
- 2. Comment obtenir le statut Checkbox?
- 3. obtenir le code de sortie pour le programme python
- 4. quitter le fichier de commandes en utilisant le code java
- 5. commande pour fermer le fichier de commandes dans Java
- 6. quitter le fichier de commandes après l'exécution en utilisant java
- 7. comment intégrer le programme Windows dans l'applet Java?
- 8. Java Logger uniquement pour le fichier, pas de sortie d'écran
- 9. Comment puis-je exécuter un fichier de commandes Windows en tant que processus distinct de Java?
- 10. Comment obtenir le paramètre de sortie de sql dans codebehind
- 11. Comment effacer les tampons de sortie lorsque le programme forge?
- 12. Comment boucler dans un fichier de commandes Windows?
- 13. Exécution de fichier batch commandes de Windows de manière asynchrone
- 14. Comment obtenir le nom de fichier sans l'extension en Java?
- 15. "Le programme s'est terminé avec le statut 101"
- 16. Un problème avec le fichier de commandes
- 17. Parse texte cité dans le fichier de commandes
- 18. modifiez le répertoire et exécutez le fichier de commandes dans la même invite de commande.
- 19. Restaurer le statut de l'application
- 20. Statut de sortie de la commande ping
- 21. Comment obtenir le niveau d'erreur des commandes dans un tube dans la programmation par lots de Windows?
- 22. Comment spécifier le codage du fichier de sortie dans Ruby?
- 23. Pourquoi le fichier de commandes FOR échoue-t-il lors de l'itération de la sortie de la commande?
- 24. AS400 Java Java programme terminé avec le code de sortie 1
- 25. Comment obtenir le statut d'un serveur d'applications JBoss
- 26. Quel est l'équivalent Windows/cmd.exe de Linux/bash's $? - le code de sortie/retour du programme?
- 27. PowerShell 1 ne capture pas la sortie du fichier de commandes avec le té
- 28. Que signifie% ~ d0 dans un fichier de commandes Windows?
- 29. Programme termine sur le déplacement de fichier
- 30. Comment obtenir une sortie d'un programme Exec dans Ino Setup?
J'ai eu un léger problème avec cette réponse ... AFAIK, vous ne pouvez pas utiliser d'espace dans la commande set, il doit donc être défini sur exitcode =% ERRORLEVEL%. Quoi qu'il en soit, faire ce changement a fonctionné pour moi. –
@RichardFawcett: Édité, merci. –