Saltar al contenido

Redirigir Windows cmd stdout y stderr a un solo archivo

Solución:

Quieres:

dir > a.txt 2>&1

La sintaxis 2>&1 redirigirá 2 (stderr) a 1 (salida estándar). También puede ocultar mensajes redirigiéndolos a NUL, más explicaciones y ejemplos en MSDN.

La respuesta de Anders Lindahl es correcta, pero debe tenerse en cuenta que si está redirigiendo stdout a un archivo y desea redirigir stderr también, DEBE asegurarse de que 2>&1 está especificado DESPUÉS los 1> redireccionar, de lo contrario no funcionará.

REM *** WARNING: THIS WILL NOT REDIRECT STDERR TO STDOUT ****
dir 2>&1 > a.txt

Información de antecedentes de MSKB

Si bien la respuesta aceptada a esta pregunta es correcta, realmente no explica mucho por qué Funciona, y dado que la sintaxis no es clara de inmediato, hice una búsqueda rápida en Google para averiguar qué estaba pasando realmente. Con la esperanza de que esta información sea útil para otros, la estoy publicando aquí.

Tomado de MS Support KB 110930.


De MSKB110930

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 se envían a menudo al flujo de error estándar en lugar del flujo de salida estándar.

La salida de una aplicación o comando de consola (símbolo del sistema) a menudo se envía a dos flujos separados. La salida normal se envía a Standard Out (STDOUT) y los mensajes de error se envían a Standard Error (STDERR). Cuando redirige la salida de la consola usando el símbolo “>”, solo está redirigiendo STDOUT. Para redirigir STDERR debe especificar ‘2>’ para el símbolo de redirección. Esto selecciona el segundo flujo de salida que es STDERR.

Ejemplo

El comando dir file.xxx (dónde file.xxx no existe) mostrará la siguiente salida:

Volume in drive F is Candy Cane Volume Serial Number is 34EC-0876

File Not Found

Si redirige la salida a la NUL dispositivo usando dir file.xxx > nul, seguirá viendo el mensaje de error como parte de la salida, así:

File Not Found

Para redirigir (solo) el mensaje de error a NUL, use el siguiente comando:

dir file.xxx 2> nul

O 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
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *