L’une des façons les plus utiles de consigner et de dépanner le comportement des commandes ou des travaux par lots que vous exécutez sous Windows est de rediriger la sortie vers un fichier.
Cependant, il existe quelques façons différentes de rediriger les écritures de la ligne de commande vers un fichier. L’option que vous choisissez dépend de la façon dont vous voulez visualiser votre sortie de commande.
- Comment fonctionne la sortie de l’invite de commande de Windows
- Rediriger la sortie standard écrire vers un nouveau fichier
- Rediriger les écritures de sortie standard vers le même fichier
- Rediriger l’erreur standard vers un fichier
- Rediriger toutes les écritures de sortie vers un même fichier
- Silence des flux de sortie standard ou d’erreur
Comment fonctionne la sortie de l’invite de commande de Windows
Lorsque vous tapez une commande dans la console Windows (invite de commande), la sortie de cette commande va vers deux flux séparés.
- STDOUT : La sortie standard est l’endroit où vont toutes les réponses standard des commandes. Par exemple, la réponse standard pour la commande DIR est une liste de fichiers à l’intérieur d’un répertoire.
- STDERR : Standard Error est l’endroit où vont tous les messages d’erreur s’il y a un problème avec la commande. Par exemple, s’il n’y a pas de fichiers dans le répertoire, la commande DIR sortira « Fichier non trouvé » dans le flux d’erreur standard.
Vous pouvez rediriger la sortie vers un fichier dans Windows pour ces deux flux de sortie.
Rediriger la sortie standard écrire vers un nouveau fichier
Il existe deux façons de rediriger la sortie standard d’une commande vers un fichier. La première consiste à envoyer la sortie de la commande écrire dans un nouveau fichier chaque fois que vous exécutez la commande.
Pour ce faire, ouvrez l’invite de commande et tapez :
dir test.exe > myoutput.txt
Le caractère > indique à la console de sortir STDOUT vers le fichier portant le nom que vous avez fourni.
Lorsque vous exécutez cette commande, vous remarquerez qu’il n’y a pas de réponse dans la fenêtre de commande sauf l’erreur que le fichier n’existe pas.
C’est parce que la sortie standard de la commande a été redirigée vers un fichier appelé myoutput.txt. Ce fichier existe maintenant dans le même répertoire que celui où vous avez exécuté la commande. La sortie d’erreur standard s’affiche toujours comme elle le fait normalement.
Note : Prenez soin de changer le répertoire actif de l’invite de commande avant d’exécuter la commande. De cette façon, vous saurez où sont stockés les fichiers de sortie.
Vous pouvez visualiser la sortie standard qui est allée dans le fichier en tapant « ma sortie.txt » dans la fenêtre de commande. Cela ouvrira le fichier texte dans votre visualisateur de fichiers texte par défaut. Pour la plupart des gens, c’est généralement Notepad.exe.
La prochaine fois que vous exécuterez la même commande, le fichier de sortie précédent sera supprimé. Un nouveau fichier de sortie sera recréé avec la dernière sortie de la commande.
Rediriger les écritures de sortie standard vers le même fichier
Que faire si vous ne voulez pas écraser le même fichier ? Une autre option consiste à utiliser >> plutôt que > pour rediriger vers un fichier de sortie. Dans le cas de cet exemple, vous taperez :
dir test.exe >> myoutput.txt
Vous verrez la même sortie (l’erreur seulement).
Mais dans ce cas, au lieu d’écraser le fichier de sortie, cette commande ajoute la nouvelle sortie au fichier de sortie existant.
Chaque fois que vous exécutez une commande et ajoutez la sortie à un fichier, elle écrira la nouvelle sortie standard à la fin du fichier existant.
Rediriger l’erreur standard vers un fichier
De la même façon que vous pouvez rediriger les écritures de sortie standard vers un fichier, vous pouvez également sortir le flux d’erreur standard vers un fichier.
Pour ce faire, vous devrez ajouter 2> à la fin de la commande, suivi du fichier d’erreur de sortie que vous voulez créer.
Dans cet exemple, vous taperez la commande :
dir test.exe > myoutput.txt 2> output.err
Ceci envoie le flux de sortie standard vers monoutput.txt, et le flux d’erreur standard vers output.err. Le résultat est qu’aucun flux de sortie n’est affiché dans la fenêtre de la console.
Cependant, vous pouvez voir les messages d’erreur en tapant output.err. Cela ouvrira le fichier dans votre visionneur de fichiers texte par défaut.
Comme vous pouvez le voir, tous les messages d’erreur de la commande sont sortis dans le fichier d’erreur. Tout comme avec la sortie standard, vous pouvez utiliser >> à la place pour ajouter l’erreur aux erreurs des commandes exécutées précédemment.
Rediriger toutes les écritures de sortie vers un même fichier
Toutes les approches ci-dessus donnent lieu à plusieurs fichiers. Un fichier est pour le flux de sortie standard et l’autre est pour le flux d’erreur standard.
Si vous voulez inclure ces deux sorties dans le même fichier, vous pouvez le faire aussi. Pour ce faire, il vous suffit de rediriger toutes les sorties vers le même fichier en utilisant la commande suivante.
dir test.exe 1> myoutput.txt 2>&1
Voici comment fonctionne cette commande :
- La sortie standard est dirigée vers le fichier de sortie identifié par le numéro de sortie 1.
- La sortie d’erreur standard identifiée par le numéro 2 est redirigée vers le fichier de sortie identifié par le numéro 1.
Ceci ajoutera la sortie d’erreur à la fin de la sortie standard.
C’est une façon utile de voir toute la sortie pour n’importe quelle commande dans un seul fichier.
Silence des flux de sortie standard ou d’erreur
Vous pouvez également désactiver la sortie standard ou l’erreur standard en redirigeant la sortie vers un NUL au lieu d’un fichier.
En reprenant l’exemple ci-dessus, si vous ne voulez que la sortie standard et pas du tout l’erreur standard, vous pouvez utiliser la commande suivante :
dir test.exe 1> myoutput.txt 2>nul
Ceci donnera le même fichier de sortie que le premier exemple ci-dessus où vous n’avez redirigé que la sortie standard, mais avec cette commande, l’erreur ne fera pas écho à l’intérieur de la console. Elle ne créera pas non plus de fichier journal des erreurs.
C’est utile si vous ne vous souciez d’aucune erreur et que vous ne voulez pas qu’elles deviennent une nuisance.
Vous pouvez exécuter n’importe laquelle des mêmes commandes de sortie ci-dessus à l’intérieur d’un fichier BAT et la sortie de cette ligne ira dans le fichier de sortie que vous spécifiez. C’est une façon utile de voir si des commandes à l’intérieur d’un fichier BAT ont eu des erreurs lorsqu’elles ont essayé de s’exécuter.