[INFO] Description de mon projet de Error Handler pour batch

Le
Didier_Toulouse
Bonjour à tous,

19° ce matin à Toulouse, prévisions temps couvert, pluies prévues p=
our
le week-end.

Au vu des nombreux mails reçus (zéro) suite à mes questions sur la
gestion des erreurs dans un fichier batch, je vous dois quelques
explications, ce qui permettra à ceux qui auraient envie d'aider
concrètement de me faire bénéficier de leurs suggestions.

Mon objectif humblement planétaire est de produire un freeware destiné
à offrir une gestion centralisée des erreurs dans des .bat à
destination des system managers (si cela n'existe pas déjà,
évidemment).

Avec ce que j'ai déjà lu ici et là, j'ai compris trois choses :

o toutes les commandes de la Shell "standard" et de la PowerShell
retournent un code d'erreur (probablement différent l'une de
l'autre)

o chaque programme, utilitaire système ou non, retourne les codes
d'erreur que le programmeur a bien voulu y mettre

o il n'y a visiblement pas de fonction accessible depuis la console
qui permette à partir d'un code erreur unique d'avoir sa signification
(vu qu'il peut y avoir autant de significations pour un même code que
de programmes qui le renvoient, contrairement à VMS qui propose un
fichier centralisé avec des codes erreur uniques, puisque chaque
programme utilise les mêmes appels système, lesquels sont chargés eux=
-
mêmes de renvoyer ces codes).

Donc, mon approche architecturale sera la suivante :

a) trouver tous les codes erreur de tous les programmes et fonctions
de XP et W7 (si "on" insiste, j'ajouterai Vista, mais bon)

b) créer un fichier texte unique des messages correspondants avec
comme clé l'indicateur du programme qui produit l'erreur et le code
erreur renvoyé par ce programme

c) inventer un moyen pour que chaque commande écrite dans une
procédure batch soit suivie d'un test du code erreur %ERRORLEVEL%
retourné (ça, on sait faire) et que l'on SACHE qui l'a retourné (ça=
,
je sais pas faire), afin de construire la clé et renvoyer sur demande
le message qui va bien.

Il y a deux solutions, a priori, à la question c)

Soit Windows, dans un .bat, "sait" quelle image vient de se terminer
et d'envoyer son code retour (pas forcément d'erreur, heureusement)

Soit Windows ne le sait pas, et il faut que je trouve un moyen de le
savoir.

Si ProcMon
http://technet.microsoft.com/en-us/sysinternals/bb896645.aspx
le sait, je dois bien pouvoir faire pareil, non ? (with a little help
from my Friends)

Le bédit broblème, comme disent nos amis outre-Rhin, c'est de faire
"ça" dans un .bat

Probablement via un exécutable à appeler après *chaque* ligne de
commande exécutant une fonction ou appelant un programme.

Avec DCL, le langage de commande de VMS, on a un

$ on error then gosub ERROR_MGR

à placer *une seule fois* au début de la procédure, et chaque erreur
rencontrée fait faire le branchement dans la subroutine ERR_MGR.

mais je crains que ce truc qui s'appelle un AST n'existe pas trop dans
une procédure de commande Windows.

Comments, bitte ?
Muchas.

(cross post dans ponx.frwin7)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Max PUECH
Le #22660071
Dans <af580f91-cd63-4847-a13a-
, Didier_Toulouse a écrit:


Bonjour à tous,


Bonjour,



...
Avec DCL, le langage de commande de VMS, on a un

$ on error then gosub ERROR_MGR

à placer *une seule fois* au début de la procédure, et chaque erreur
rencontrée fait faire le branchement dans la subroutine ERR_MGR.

mais je crains que ce truc qui s'appelle un AST n'existe pas trop dans
une procédure de commande Windows.



As-tu exploré cette piste:

commande
goto err%errorlevel%

:err0
echo tout va bien
goto eof

:err1
echo erreur 1
goto eof

etc.

Voir aussi http://www.mclaveau.com/batch/index.html.

@+
Publicité
Poster une réponse
Anonyme