Un script batch peut s’exécuter en silence total ou vous inonder de texte illisible – tout dépend d’une seule commande : echo. Maîtriser son comportement, c’est souvent ce qui sépare un script jetable d’un script qu’on peut déboguer et maintenir six mois plus tard.
Qu’est-ce qu’un fichier batch et à quoi sert la commande echo?
Un fichier batch est un fichier texte brut portant l’extension .bat ou .cmd, que Windows lit et exécute ligne par ligne via son interpréteur de commandes cmd.exe. Pas de compilation, pas de runtime tiers : vous écrivez des commandes, Windows les exécute dans l’ordre.
L’extension .cmd existe depuis Windows NT et apporte quelques comportements supplémentaires par rapport au .bat classique. Les fichiers .cmd ne sont pas reconnus par Windows 9X – un détail qui n’a plus d’importance au quotidien, mais qui explique pourquoi les deux extensions coexistent encore.
Dans ce contexte, echo sert à deux choses : afficher du texte dans la console, et contrôler si les commandes elles-mêmes sont affichées pendant l’exécution. C’est la brique de base de tout retour visuel dans un script.
Syntaxe et fonctionnement de base de la commande echo
La syntaxe officielle, telle que documentée par Microsoft Learn, tient en deux formes :
echo [<Message>]– affiche le texte spécifié dans la consoleecho [on | off]– active ou désactive l’affichage des commandes en cours d’exécution
Par défaut, l’écho est activé (echo on). Cela signifie que chaque commande de votre script est affichée avant d’être exécutée. Sur un script de vingt lignes, le résultat devient vite illisible.
Si vous tapez echo seul, sans aucun paramètre, Windows n’affiche pas de ligne vide : il retourne l’état actuel, soit ECHO est activé ou ECHO est désactivé. Comportement contre-intuitif pour ceux qui arrivent d’un shell Unix.
Comment désactiver l’echo dans un fichier batch?

La première ligne de la quasi-totalité des scripts batch professionnels est @echo off. Les deux éléments ont des rôles distincts qu’il vaut la peine de comprendre séparément.
echo off désactive l’affichage de toutes les commandes qui suivent. Mais la ligne echo off elle-même s’affiche quand même, car l’écho est encore actif au moment où elle est lue. Le signe @ résout ce problème : placé devant n’importe quelle commande, il supprime l’affichage de cette ligne spécifique, quelle que soit l’état de l’écho.
Combiner les deux donne @echo off : la commande se masque elle-même, puis désactive l’écho pour tout le reste du script. C’est la combinaison standard.
Si vous souhaitez masquer une seule commande sans toucher au comportement global, utilisez simplement @ devant cette commande. À noter : echo off placé dans un fichier batch n’affecte pas l’invite de commandes une fois le script terminé. La session cmd.exe hôte retrouve son état initial.
Comment utiliser la commande echo avec des variables dans un fichier batch?
Pour afficher la valeur d’une variable, entourez son nom avec le symbole %. Par exemple, echo %USERNAME% affiche le nom de l’utilisateur courant. La syntaxe est identique pour les variables définies par vos soins avec set.
Un cas particulier à connaître : si la variable est vide ou n’existe pas, echo %mavariable% n’affiche pas une ligne vide – il affiche ECHO est désactivé. Ce comportement surprend systématiquement au premier contact.
Pour forcer l’affichage d’une ligne vide ou pour gérer les variables potentiellement vides, utilisez la syntaxe avec deux-points : echo:%mavariable%. Si la variable est vide, vous obtenez une ligne vide réelle. Si elle contient une valeur, cette valeur s’affiche normalement.
| Commande | Variable vide | Variable remplie |
|---|---|---|
echo %var% |
ECHO est désactivé | Valeur affichée |
echo:%var% |
Ligne vide | Valeur affichée |
Redirection et caractères spéciaux : aller plus loin avec echo
La sortie d’une commande echo peut être redirigée vers un fichier texte. L’opérateur > crée ou écrase le fichier cible, tandis que >> ajoute le texte à la fin du fichier existant sans l’écraser.
echo Démarrage du script > log.txt– crée ou remplace log.txtecho Étape 2 terminée >> log.txt– ajoute une ligne à log.txtecho. >> log.txt– ajoute une ligne vide dans le fichier
Certains caractères ont un sens spécial pour cmd.exe et ne s’affichent pas tels quels. Le caractère caret ^ sert d’échappement : placez-le devant |, < ou > pour que ces caractères soient traités comme du texte ordinaire.
Par exemple, echo flux1 ^| flux2 affichera littéralement flux1 | flux2 dans la console, sans que cmd.exe interprète le pipe comme une redirection vers une autre commande. Sans le caret, le comportement est imprévisible.
La commande echo Windows reste indispensable pour déboguer vos scripts
Quand un script ne produit pas le résultat attendu, la première réaction est souvent de relancer en espérant que ça passe. Une approche plus utile consiste à tracer l’exécution avec echo : affichez les valeurs de vos variables à des points clés du script pour voir ce que Windows voit réellement.
Réactiver temporairement echo on à mi-script permet de voir exactement quelles commandes sont exécutées et dans quel ordre. Vous pouvez encadrer une section suspecte entre echo on et echo off pour isoler le problème sans noyer l’ensemble de la sortie.
Une technique courante en débogage : afficher un message d’état avant et après chaque bloc logique. Quelque chose comme echo [OK] Connexion établie ou echo [ERREUR] Fichier introuvable suffit à construire une trace lisible. C’est exactement le type de comportement opaque des processus Windows que l’affichage explicite permet d’éviter dans vos propres scripts.
Pour les scripts qui tournent en arrière-plan ou en tâche planifiée, redirigez ces messages vers un fichier log avec >>. Vous disposez ainsi d’un historique d’exécution sans avoir à surveiller manuellement la console.
Compatibilité et limites : ce que echo ne peut pas faire dans un fichier batch

Selon la documentation officielle de Microsoft Learn, la commande echo est compatible avec Windows 10, Windows 11, et l’ensemble des versions Windows Server de 2016 à 2025. Elle fait partie du socle de cmd.exe sans aucune installation additionnelle.
Les limites sont réelles. echo ne gère pas le formatage avancé : pas de couleur, pas de positionnement du curseur, pas de mise en gras native dans la console. Pour ce type d’affichage, il faut se tourner vers PowerShell ou des séquences ANSI activées via d’autres moyens.
- Pas de coloration syntaxique native dans la sortie
- Pas de retour à la ligne conditionnel intégré
- Comportement isolé : les réglages
echo on/offdu script n’affectent pas la sessioncmd.exeparente - La longueur maximale d’une ligne de commande sous
cmd.exeest de 8191 caractères – limite qui s’applique aussi aux messagesechotrès longs
La distinction .bat / .cmd joue aussi sur quelques comportements marginaux. Les fichiers .cmd activent par défaut un traitement d’erreurs légèrement différent via ERRORLEVEL. Pour la commande echo elle-même, les deux extensions se comportent de manière identique sur les versions modernes de Windows.
Si vos besoins dépassent le simple affichage de texte – par exemple automatiser des interactions avec des composants système Windows ou gérer des droits complexes – PowerShell offre un niveau de contrôle que les scripts batch ne peuvent pas atteindre. Mais pour tracer une exécution, construire un fichier log ou guider un utilisateur pendant un script, echo fait le travail sans overhead.
Une commande d’une dizaine de caractères, présente depuis les premières versions de DOS, qui reste le seul moyen fiable de savoir ce que votre script fait vraiment au moment où il le fait.