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

Le
Didier_Toulouse
Bonjour tous,

19 ce matin Toulouse, prvisions temps couvert, pluies prvues p=
our
le week-end.

Au vu des nombreux mails reus (zro) 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
concrtement de me faire bnficier de leurs suggestions.

Mon objectif humblement plantaire est de produire un freeware destin
offrir une gestion centralise des erreurs dans des .bat
destination des system managers (si cela n'existe pas dj,
videmment).

Avec ce que j'ai dj 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 diffrent l'une de
l'autre)

o chaque programme, utilitaire systme 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 mme code que
de programmes qui le renvoient, contrairement VMS qui propose un
fichier centralis avec des codes erreur uniques, puisque chaque
programme utilise les mmes appels systme, lesquels sont chargs eux=
-
mmes 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) crer 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
procdure 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 forcment 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 bdit broblme, comme disent nos amis outre-Rhin, c'est de faire
"a" dans un .bat

Probablement via un excutable appeler aprs *chaque* ligne de
commande excutant 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 dbut de la procdure, et chaque erreur
rencontre 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 procdure de commande Windows.

Comments, bitte ?
Muchas.

(cross post dans ponx.frwin7)
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