2016-08-09 3 views
1

J'ai écrit un fichier de commandes qui redémarre une application après son abandon. Mais je veux seulement que cela se produise quand l'abandon était intentionnel. Si l'application a planté, je veux que le fichier séquentiel ne fasse rien d'autre que sortir. Comment puis-je tester si une application renvoie un code d'erreur de réussite ou d'échec lors de la sortie? Est-ce que ça a du sens?Comment tester si une application renvoie le succès ou l'échec

Merci.

[modifier]

J'ai essayé ceci:

@echo off 
e: 
cd %HWRM%\Bin\Release 
HomeworldRM.exe 
echo The errorlevel is %errorlevel%. 
pause 

Mais il dit toujours le errorlevel est égal à zéro, même si le jeu se bloque.

+2

Avez-vous une documentation indiquant que l'application indiquera le succès ou l'échec à sa sortie? Il n'y a aucune exigence qu'il le fasse. Et comment l'application est-elle * supprimée *? –

+0

Aucun document ne mentionne cela. Parfois, je quitte l'application avec ALT + F4. Parfois, il se ferme en raison de l'exécution d'un script. Parfois, il se bloque. L'application est un jeu d'ailleurs. – posfan12

Répondre

2
@echo off 

:startGame 
yourGame.exe 

rem simple test case1: abcde.exe 
rem abcde.exe do not exist, errorlevel will not be 0 

rem simple test case2: call cde.bat 
rem the bat only contain one line of code: exit /B 1 
rem it will return errorlevel = 1 

echo errorlevel is %errorlevel% 

if %errorlevel% EQU 0 ECHO quitting intentional and restart now & pause & goto startGame 

rem return TRUE when the ERRORLEVEL is greater than or equal to 1 
if %errorlevel% GTR 0 ECHO Crashed and Bye 
pause 

Habituellement, la fermeture de l'application sans erreur vous donnera errorlevel = 0. J'espère que cela vous aidera.

+0

L'utilisation de la commande start affectera-t-elle le niveau d'erreur? Par exemple: 'start" un "/ B/WAIT HomeworldRM.exe" La raison pour laquelle je demande est parce que le jeu renvoie errorlevel 0 tout le temps, même en cas de plantage. – posfan12

+0

Cela affecte. J'ai essayé de démarrer la commande avec/B, cela créera toujours un nouveau contexte. Le niveau d'erreur ne peut pas être renvoyé par la commande start. J'ai testé cette chauve-souris et tapez simplement l'exe sont tous les deux d'accord. – Pika

+0

Cela ne fonctionne pas pour moi, même sans la commande 'start'. Existe-t-il une autre solution sans utiliser de fichiers batch? – posfan12