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 tâches 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 manière dont vous souhaitez afficher la sortie de votre commande.

Fonctionnement de la sortie de l'invite de commande Windows(How Windows Command Prompt Output Works)

Lorsque vous tapez une commande dans la console Windows ( invite de commande(command prompt) ), 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 à l'intérieur d'un répertoire.
  • STDERR : L'erreur standard(Standard Error) 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 pas de fichiers dans le répertoire, la commande DIR affichera " Fichier(File) introuvable" dans le flux d'erreur standard .(Standard Error)

Vous pouvez rediriger la sortie vers un fichier dans Windows pour ces deux flux de sortie.

Rediriger l'écriture de la sortie standard vers un nouveau fichier(Redirect Standard Output Write to New File)

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 cela, 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(run this command) , vous remarquerez qu'il n'y a pas de réponse dans la fenêtre de commande, sauf l'erreur indiquant que le fichier n'existe pas.

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 d'habitude.

Remarque(Note) : veillez à changer le répertoire actif(change the active directory) pour 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(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 sortie de la dernière commande.

Rediriger les écritures de sortie standard(Standard Output) vers le même fichier(Same File)

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 taperiez :

dir test.exe >> myoutput.txt

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

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(Redirect Standard Error To a File)

De la même manière que vous pouvez rediriger les écritures de sortie standard vers un fichier, vous pouvez également générer le flux d'erreurs 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 souhaitez créer.

Dans cet exemple, vous allez saisir la commande : 

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

Cela envoie le flux de sortie standard à myoutput.txt et le flux d'erreur standard à 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 visionneuse de fichiers texte par défaut.

Comme vous pouvez le voir, tous les messages d'erreur de la commande sont générés dans le fichier d'erreurs. Tout(Just) comme avec la sortie standard, vous pouvez utiliser >> à la place pour ajouter l'erreur aux erreurs des commandes précédemment exécutées.

Rediriger toutes les écritures de sortie vers un même fichier(Redirect All Output Writes to a Same File)

Toutes les approches ci-dessus génèrent plusieurs fichiers. Un fichier est pour le flux de sortie standard et l'autre pour le 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 cette commande fonctionne :

  • 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.

C'est un moyen utile de voir toutes les sorties de n'importe quelle commande dans un seul fichier. 

Désactivation des flux de sortie standard ou d'erreur(Silencing Standard or Error Output Streams)

Vous pouvez également désactiver la sortie standard(Standard Output) ou l'erreur standard(Standard Error) en redirigeant la sortie vers un NUL au lieu d'un fichier.

En utilisant l'exemple ci-dessus, si vous ne voulez que la sortie standard(Standard Output) et aucune erreur standard(Standard Error) , vous pouvez utiliser la commande suivante :

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

Cela se traduira par le même fichier de sortie que le premier exemple ci-dessus où vous n'avez redirigé que la sortie standard(Standard Output) , 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(inside a BAT file) et la sortie de cette ligne ira dans 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.



About the author

Je suis un ingénieur en matériel avec plus de 10 ans d'expérience dans le domaine. Je me spécialise dans les contrôleurs et les câbles USB, ainsi que dans les mises à niveau du BIOS et le support ACPI. Dans mes temps libres, j'aime aussi bloguer sur divers sujets liés à la technologie et à l'ingénierie.



Related posts