Bien que la réponse acceptée à cette question soit correcte, cela ne fait vraiment pas grand-chose pour expliquer pourquoi cela fonctionne, et puisque la syntaxe n'est pas immédiatement claire, j'ai fait un rapide google pour savoir ce qui se passait réellement. Dans l'espoir que ces informations soient utiles aux autres, je les publie ici.
Redirection des messages d'erreur à partir de l'invite de commandes: STDERR / STDOUT
Sommaire
Lors de la redirection de la sortie d'une application à l'aide du symbole «>», les messages d'erreur s'impriment toujours à l'écran. En effet, 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 de console (invite de commande) est souvent envoyée à deux flux distincts. La sortie régulière est envoyée à la sortie standard (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. Afin de rediriger STDERR, vous devez spécifier «2>» pour le symbole de redirection. Ceci sélectionne le deuxième flux de sortie qui est STDERR.
Exemple
La commande dir file.xxx
(où file.xxx
n'existe pas) affichera la sortie suivante:
Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876
File Not Found
Si vous redirigez la sortie vers le NUL
appareil en utilisant dir file.xxx > nul
, vous verrez toujours la partie message d'erreur de la sortie, comme ceci:
File Not Found
Pour rediriger (uniquement) le message d'erreur vers NUL
, utilisez la commande suivante:
dir file.xxx 2> nul
Ou, vous pouvez rediriger la sortie vers un endroit 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 seul fichier en utilisant la commande "& 1" pour rediriger la sortie de STDERR vers STDOUT, puis en envoyant la sortie de STDOUT vers un fichier:
dir file.xxx 1> output.msg 2>&1