Redirection des messages d’erreur à partir de l’invite de commandes : STDERR/STDOUT

Cet article décrit la redirection des messages d’erreur à partir de l’invite de commandes.

Version d’origine du produit : Visual C++
Numéro de la base de connaissances d’origine : 110930

Résumé

Lorsque vous redirigez la sortie d’une application à l’aide du symbole , les > messages d’erreur s’affichent toujours à l’écran. Cela est dû au fait que les messages d’erreur sont souvent envoyés au flux d’erreur standard au lieu du flux de sortie standard.

La sortie d’une application ou d’une commande console (invite de commandes) est souvent envoyée à deux flux distincts. La sortie standard est envoyée à Standard Out (STDOUT) et les messages d’erreur sont envoyés à l’erreur standard (STDERR). Lorsque vous redirigez la sortie de la console à l’aide du > symbole , vous redirigez uniquement STDOUT. Pour rediriger STDERR, vous devez spécifier 2> pour le symbole de redirection. Cette opération sélectionne le deuxième flux de sortie qui est STDERR.

Exemple

La commande dir file.xxx (où file.xxx n’existe pas) affiche la sortie suivante :

Le volume dans le lecteur F est Candy Cane Volume Serial Number is 34EC-0876
Fichier introuvable

Si vous redirigez la sortie vers l’appareil NUL à l’aide dir file.xxx > nulde , le message d’erreur s’affiche toujours :

Fichier introuvable

Pour rediriger le message d’erreur vers nul, utilisez la commande suivante :

dir file.xxx 2> nul

Vous pouvez également rediriger la sortie vers un emplacement et les erreurs vers un autre.

dir file.xxx > output.msg 2> output.err

Vous pouvez imprimer les erreurs et la sortie standard dans un fichier unique en utilisant la &1 commande pour rediriger la sortie de STDERR vers STDOUT, puis en envoyant la sortie de STDOUT à un fichier :

dir file.xxx 1> output.msg 2>&1