J'ai un fichier .bat dans Windows qui fait trois choses
cmd1 arg1 arg2
cmd2 arg3
cmd3 arg4 arg5 arg6
Parfois, cmd1 peut échouer et c'est très bien, je voudrais continuer et exécuter cmd2 et cmd3. Mais ma batte s'arrête à cmd1. Comment puis-je éviter ça?
Mettez à jour pour plus de clarté - ce ne sont pas d'autres fichiers .bat, ce sont des commandes exe. J'espère que je n'aurai pas besoin de construire une arborescence de fichiers .bat pour y parvenir.
Une autre option consiste à utiliser l'amperstand (&
)
cmd1 & cmd2 & cmd3
Si vous utilisez un double, il ne sera exécuté que si la commande précédente se termine avec succès (%ERRORLEVEL%==0
)
cmd1 && cmd2 && cmd3
Si vous utilisez un double tuyau (||
), il n'exécutera la commande suivante que si la précédente s'est terminée avec un code d'erreur (%ERRORLEVEL% NEQ 0
)
cmd1 || cmd2 || cmd3
Cela a fonctionné pour moi:
cmd.exe /c cmd1 arg1
cmd2
...
Ceci utilise cmd.exe
pour exécuter la commande dans une nouvelle instance de l'interpréteur de commandes Windows. Ainsi, une commande ayant échoué n'interrompt pas le script de traitement par lots. L’indicateur /c
indique à l’interprète de se terminer dès l’exécution de la commande.
cmd2
s'exécute même si la première commande échoue. Voir cmd /?
à partir de l'invite de commande Windows pour plus d'informations.
Présumant les cmds sont d’autres fichiers .bat, empilez les commandes comme ceci:
call cmd1
call cmd2
call cmd3