Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

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

1 réponse
Avatar
Didier_Toulouse
Bonjour =E0 tous,

19=B0 ce matin =E0 Toulouse, pr=E9visions temps couvert, pluies pr=E9vues p=
our
le week-end.

Au vu des nombreux mails re=E7us (z=E9ro) suite =E0 mes questions sur la
gestion des erreurs dans un fichier batch, je vous dois quelques
explications, ce qui permettra =E0 ceux qui auraient envie d'aider
concr=E8tement de me faire b=E9n=E9ficier de leurs suggestions.

Mon objectif humblement plan=E9taire est de produire un freeware destin=E9
=E0 offrir une gestion centralis=E9e des erreurs dans des .bat =E0
destination des system managers (si cela n'existe pas d=E9j=E0,
=E9videmment).

Avec ce que j'ai d=E9j=E0 lu ici et l=E0, j'ai compris trois choses :

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

o chaque programme, utilitaire syst=E8me 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 =E0 partir d'un code erreur unique d'avoir sa signification
(vu qu'il peut y avoir autant de significations pour un m=EAme code que
de programmes qui le renvoient, contrairement =E0 VMS qui propose un
fichier centralis=E9 avec des codes erreur uniques, puisque chaque
programme utilise les m=EAmes appels syst=E8me, lesquels sont charg=E9s eux=
-
m=EAmes 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=E9er un fichier texte unique des messages correspondants avec
comme cl=E9 l'indicateur du programme qui produit l'erreur et le code
erreur renvoy=E9 par ce programme

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

Il y a deux solutions, a priori, =E0 la question c)

Soit Windows, dans un .bat, "sait" quelle image vient de se terminer
et d'envoyer son code retour (pas forc=E9ment 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=E9dit brobl=E8me, comme disent nos amis outre-Rhin, c'est de faire
"=E7a" dans un .bat

Probablement via un ex=E9cutable =E0 appeler apr=E8s *chaque* ligne de
commande ex=E9cutant une fonction ou appelant un programme.

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

$ on error then gosub ERROR_MGR

=E0 placer *une seule fois* au d=E9but de la proc=E9dure, et chaque erreur
rencontr=E9e 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=E9dure de commande Windows.

Comments, bitte ?
Muchas.

(cross post dans ponx.fr\win7)

1 réponse

Avatar
Max PUECH
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.

@+