Rediriger la sortie de la ligne de commande Windows vers un fichier texte

L’un des moyens les plus utiles de consigner et de dépanner le comportement des commandes ou des travaux par lots que vous exécutez sous Windows consiste à rediriger la sortie vers un fichier.

Cependant, il existe plusieurs façons de rediriger les écritures de ligne de commande vers un fichier. L’option que vous choisissez dépend de la façon dont vous souhaitez afficher la sortie de votre commande.

Rediriger la sortie de la ligne de commande Windows vers

Fonctionnement de la sortie de l’invite de commande Windows

Lorsque vous tapez une commande dans la console Windows (invite de commande), la sortie de cette commande est dirigée vers deux flux distincts.

  • STDOUT: Standard Out 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 dans un répertoire.
  • STDERR: Erreur standard est l’endroit où les messages d’erreur vont s’il y a un problème avec la commande. Par exemple, s’il n’y a aucun fichier dans le répertoire, la commande DIR affichera «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 l’écriture de sortie standard 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 commande en écriture 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 dans le fichier avec le nom que vous avez fourni.

Lorsque vous exécutez cette commande, vous remarquerez qu’il n’y a aucune réponse dans la fenêtre de commande, sauf l’erreur selon laquelle le fichier n’existe pas.

Rediriger la sortie de la ligne de commande Windows vers

En effet, la sortie standard de la commande a été redirigée vers un fichier appelé myoutput.txt. Le fichier existe maintenant dans le même répertoire où vous avez exécuté la commande. La sortie d’erreur standard s’affiche toujours comme elle le fait normalement.

Remarque: Veillez à modifier le répertoire actif de l’invite de commande avant d’exécuter la commande. De cette façon, vous saurez où les fichiers de sortie sont stockés.

Vous pouvez afficher la sortie standard qui est allée au fichier en tapant «myoutput.txt» dans la fenêtre de commande. Cela ouvrira le fichier texte dans votre visionneuse de fichiers texte par défaut. Pour la plupart des gens, il s’agit généralement de Notepad.exe.

1608625641 506 Rediriger la sortie de la ligne de commande Windows vers

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 souhaitez 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 saisiriez:

dir test.exe >> myoutput.txt

Vous verrez la même sortie (l’erreur uniquement).

1608625641 308 Rediriger la sortie de la ligne de commande Windows vers

Mais dans ce cas, au lieu d’écraser le fichier de sortie, cette commande ajoute la nouvelle sortie au fichier de sortie existant.

1608625641 30 Rediriger la sortie de la ligne de commande Windows vers

Chaque fois que vous exécutez une commande et que vous ajoutez la sortie à un fichier, il écrira la nouvelle sortie standard à la fin du fichier existant.

Rediriger l’erreur standard vers un fichier

De la même manière que vous pouvez rediriger les écritures de sortie standard vers un fichier, vous pouvez également exporter le flux d’erreur standard dans un fichier.

Pour ce faire, vous devrez ajouter 2> à la fin de la commande, suivi du fichier d’erreur de sortie que vous souhaitez créer.

Dans cet exemple, vous allez taper la commande:

dir test.exe > myoutput.txt 2> output.err

Cela envoie le flux de sortie standard vers myoutput.txt et le flux d’erreur standard vers output.err. Le résultat est qu’aucun flux de sortie ne s’affiche dans la fenêtre de la console.

1608625642 566 Rediriger la sortie de la ligne de commande Windows vers

Cependant, vous pouvez voir les messages d’erreur en tapant output.err. Cela ouvrira le fichier dans votre visionneuse de fichiers texte par défaut.

1608625642 908 Rediriger la sortie de la ligne de commande Windows vers

Comme vous pouvez le voir, tous les messages d’erreur de la commande sont envoyés dans le fichier d’erreur. Tout comme avec la sortie standard, vous pouvez utiliser >> au lieu d’ajouter l’erreur aux erreurs des commandes précédemment exécutées.

Rediriger toutes les écritures de sortie vers un même fichier

Toutes les approches ci-dessus aboutissent à plusieurs fichiers. Un fichier est destiné au flux de sortie standard et l’autre au flux d’erreur standard.

Si vous souhaitez inclure ces deux sorties dans le même fichier, vous pouvez également le faire. Pour ce faire, il vous suffit de rediriger toutes les sorties vers le même fichier à l’aide de 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.

Cela ajoutera la sortie d’erreur à la fin de la sortie standard.

1608625642 596 Rediriger la sortie de la ligne de commande Windows vers

C’est un moyen utile de voir toutes les sorties de toute commande dans un 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 utilisant l’exemple ci-dessus, si vous voulez uniquement une sortie standard et aucune erreur standard, vous pouvez utiliser la commande suivante:

dir test.exe 1> myoutput.txt 2>nul

Cela entraînera le même fichier de sortie que le premier exemple ci-dessus où vous avez uniquement redirigé la sortie standard, mais avec cette commande, l’erreur ne se répercutera pas dans la console. Il ne créera pas non plus de fichier journal des erreurs.

Ceci est utile si vous ne vous souciez pas des erreurs et ne voulez pas qu’elles deviennent une nuisance.

Vous pouvez exécuter l’une des mêmes commandes de sortie ci-dessus à partir d’un fichier BAT et la sortie de cette ligne ira vers le fichier de sortie que vous spécifiez. C’est un moyen utile de voir si des commandes dans un fichier BAT ont eu des erreurs lorsqu’elles ont essayé de s’exécuter.