Si bien la respuesta aceptada a esta pregunta es correcta, realmente no hace mucho para explicar por qué funciona, y dado que la sintaxis no está clara de inmediato, hice un rápido google para descubrir qué estaba pasando realmente. Con la esperanza de que esta información sea útil para otros, la publicaré aquí.
Redirigir mensajes de error desde el símbolo del sistema: STDERR / STDOUT
Resumen
Al redirigir la salida de una aplicación usando el símbolo '>', los mensajes de error aún se imprimen en la pantalla. Esto se debe a que los mensajes de error a menudo se envían a la secuencia de error estándar en lugar de a la secuencia de salida estándar.
La salida de una aplicación de consola (Símbolo del sistema) o un comando a menudo se envía a dos secuencias separadas. La salida regular se envía a Salida estándar (STDOUT) y los mensajes de error se envían a Error estándar (STDERR). Cuando redirige la salida de la consola con el símbolo ">", solo redirige STDOUT. Para redirigir STDERR, debe especificar '2>' para el símbolo de redireccionamiento. Esto selecciona la segunda secuencia de salida que es STDERR.
Ejemplo
El comando dir file.xxx
(donde file.xxx
no existe) mostrará el siguiente resultado:
Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876
File Not Found
Si redirige la salida al NUL
dispositivo usando dir file.xxx > nul
, aún verá la parte del mensaje de error de la salida, así:
File Not Found
Para redirigir (solo) el mensaje de error NUL
, use el siguiente comando:
dir file.xxx 2> nul
O bien, puede redirigir la salida a un lugar y los errores a otro.
dir file.xxx > output.msg 2> output.err
Puede imprimir los errores y la salida estándar en un solo archivo utilizando el comando "& 1" para redirigir la salida de STDERR a STDOUT y luego enviar la salida de STDOUT a un archivo:
dir file.xxx 1> output.msg 2>&1