J'essaie d'exécuter conditionnellement un exe à partir d'un fichier de commandes conditionnellement sur un autre exe s'exécutant avec succès.
J'ai essayé quelques combinaisons différentes de IF et ERRORLEVEL mais aucune ne semble fonctionner
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008r2
IF %ERRORLEVEL% 1(
"..\..\..\TeamBuildTypes\Current Branch\DatabaseUpdate.exe" -s localhost\sql2008
)
Pause
Me donne l'erreur
1 (était inattendu à cette époque.
Où vais-je mal ici?
IF ERRORLEVEL ...
est une syntaxe spéciale prise en charge depuis les jours DOS, le %ERRORLEVEL%
la prise en charge des variables a été ajoutée dans WinNT.
La syntaxe d'origine est utilisée comme ceci:
call someapp.exe
if errorlevel 1 goto handleerror1orhigher
echo succuess...
Pour utiliser la variable, utilisez la syntaxe IF normale: if %errorlevel%==0 echo success...
Notez que %errorlevel%
cesse de fonctionner si quelqu'un le fait set errorlevel=foo
et il pourrait ne pas être mis à jour pour les commandes internes cmd.exe.
Une autre solution consiste à utiliser &&
:
call someapp.exe && (echo success) || (echo error!)
Il existe (au moins) deux cas connus où le niveau d'erreur est cassé et vous devez utiliser ||
au lieu:
Les niveaux d'erreur négatifs peuvent créer un problème. Essayez quelque chose comme ceci:
IF '%ERRORLEVEL%'=='0' GOTO OK