41 votes

Comment puis-je faire en sorte que mon fichier .bat continue après une erreur

J'ai un fichier .bat sous Windows qui fait trois choses

cmd1 arg1 arg2
cmd2 arg3 
cmd3 arg4 arg5 arg6

Parfois, cmd1 peut échouer et c'est normal, je voudrais poursuivre et exécuter cmd2 et cmd3. Mais mon fichier .bat s'arrête à cmd1. Comment puis-je éviter cela?

Mise à jour pour plus de clarté - il ne s'agit pas d'autres fichiers .bat, ce sont des commandes exe. J'espère ne pas avoir à construire un arbre de fichiers .bat juste pour y parvenir.

29voto

Luke Dennis Points 4805

Une autre option est d'utiliser l'esperluette (&)

cmd1 & cmd2 & cmd3

Si vous utilisez un double, il ne continue que si la commande précédente se termine avec succès (%ERRORLEVEL%==0)

cmd1 && cmd2 && cmd3

Si vous utilisez un double pipe (||), il exécute la commande suivante uniquement si la précédente se termine avec un code d'erreur (%ERRORLEVEL% NEQ 0)

cmd1 || cmd2 || cmd3

17voto

mdpc Points 4340

En supposant que les commandes sont d'autres fichiers .bat, empilez les commandes de cette manière :

 call cmd1
 call cmd2
 call cmd3

17voto

Joseph238 Points 271

Cela a fonctionné pour moi :

cmd.exe /c cmd1 arg1
cmd2
...

Cela utilise cmd.exe pour exécuter la commande dans une nouvelle instance de l'interpréteur de commandes Windows, de sorte qu'une commande échouée n'interrompe pas le script par lots. Le drapeau /c indique à l'interpréteur de se terminer dès que la commande a fini d'être exécutée.

cmd2 s'exécute même si la première commande échoue. Consultez cmd /? à partir de l'invite de commandes Windows pour plus d'informations.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X