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)
ç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 "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:" )
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
Partager