Syntaxe plusieurs If indentés
Bonjour à tous,
J'écris un fichier batch pour exécuter 4 programmes successivement. Pour chaque programme exécuté, je vérifie s'il y a eu des erreurs, si oui, je m'envoie un email et le script s'arrête, sinon, je passe au programme suivant.
Le problème est que j'ai beaucoup de mal à indenter mes if correctement (j'ai appris ce "langage" avant hier).
Voici un premier exemple qui fonctionne correctement : J'exécute le premier programme, si correct, le deuxième s'exécute, sinon, je reçois un email. (J'ai simplifié le code pour que vous voyez bien l'algorithme)
Code:
1 2 3 4 5 6 7 8 9 10
| "Exec program 1"
type "Program1.log" | findstr /I /C:"Error:"
if %errorlevel%==0 (
Envoi_email
)else (
"Exec Program2"
type "Program2.log" | findstr /I /C:"Error:"
) |
ça marche comme je veux. Par contre, dès que j'essaye d'ajouter la suite: à savoir la vérification d'erreur suite à l'exécution du programme 2:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
| "Exec program1"
type "Program1.log" | findstr /I /C:"Error:"
if %errorlevel%==0 (
EnvoiEmail
)else (
"Exec Program2"
type "Program2.log" | findstr /I /C:"Error:"
if %errorlevel%==0 (
EnvoiEmail
)else(
EnvoiEmailExecutionTErminee
) |
Dans ce cas, seul mon program1 s'exécute. S'il y a une erreur, je ne reçois pas l'email, s'il n'y a pas d'erreur, le program2 ne s'exécute plus. C'est comme s'il ne faisait plus rien après le 1er if.
Voilà. Est-ce que quelqu'un voit où est le problème ?
Autre question : Est-ce que les lignes vides et espaces importent lorsqu'on écrit un batch ?
Merci