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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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