Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 3 - septiembre 12, 2022

Redirigir la salida desde la línea de comando de Windows a un archivo de texto

Una de las formas más útiles de registrar y solucionar el comportamiento de los comandos o trabajos por lotes que ejecuta en Windows es redirigir la salida a un archivo.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 5 - septiembre 12, 2022

Sin embargo, hay algunas formas diferentes de redirigir las escrituras de la línea de comandos a un archivo. La opción que elija depende de cómo desee ver la salida de su comando.

¿Cómo funciona la salida del símbolo del sistema de Windows?

Cuando escribe un comando en la consola de Windows (símbolo del sistema), la salida de ese comando va a dos flujos separados.

  • STDOUT: Standard Out es donde van las respuestas estándar de los comandos. Por ejemplo, la respuesta estándar para el comando DIR es una lista de archivos dentro de un directorio.
  • STDERR: Error estándar es donde van los mensajes de error si hay un problema con el comando. Por ejemplo, si no hay ningún archivo en el directorio, el comando DIR generará Archivo no encontrado en el flujo de error estándar.

Puede redirigir la salida a un archivo en Windows para ambos flujos de salida.

Redirigir la escritura de salida estándar a un archivo nuevo

Hay dos formas de redirigir la salida estándar de un comando a un archivo. El primero es enviar la escritura de salida del comando a un archivo nuevo cada vez que ejecuta el comando.

Para hacer esto, abra el símbolo del sistema y escriba:

 Dir prueba.exe > misalida.txt

El carácter > le dice a la consola que envíe STDOUT al archivo con el nombre que proporcionó.

Cuando ejecute este comando, notará que no hay ninguna respuesta en la ventana de comandos excepto el error de que el archivo no existe.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 7 - septiembre 12, 2022

Esto se debe a que la salida estándar del comando se redirigió a un archivo llamado myoutput.txt. El archivo ahora existe en el mismo directorio donde ejecutó el comando. La salida de error estándar aún se muestra como lo hace normalmente.

Nota: tenga cuidado de cambiar el directorio activo para el símbolo del sistema antes de ejecutar el comando. De esta forma sabrá dónde se almacenan los archivos de salida.

Puede ver la salida estándar que se envió al archivo escribiendo myoutput.txt en la ventana de comandos. Esto abrirá el archivo de texto en su visor de archivos de texto predeterminado. Para la mayoría de las personas, esto suele ser Notepad.exe.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 9 - septiembre 12, 2022

La próxima vez que ejecute el mismo comando, se eliminará el archivo de salida anterior. Se recreará un nuevo archivo de salida con la última salida de comandos.

Redirigir las escrituras de salida estándar al mismo archivo

¿Qué sucede si no desea sobrescribir el mismo archivo? Otra opción es usar >> en lugar de > para redirigir a un archivo de salida. En el caso de este ejemplo, escribiría:

 Dir prueba.exe >> misalida.txt

Verá el mismo resultado (solo el error).

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 11 - septiembre 12, 2022

Pero en este caso, en lugar de sobrescribir el archivo de salida, este comando agrega la nueva salida al archivo de salida existente.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 13 - septiembre 12, 2022

Cada vez que ejecuta un comando y agrega la salida a un archivo, escribirá la nueva salida estándar al final del archivo existente.

Redirigir el error estándar a un archivo

De la misma manera que puede redirigir las escrituras de salida estándar a un archivo, también puede enviar el flujo de error estándar a un archivo.

Para hacer esto, deberá agregar 2> al final del comando, seguido del archivo de error de salida que desea crear.

En este ejemplo, escribirá el comando:

 Dir prueba.exe > misalida.txt 2> salida.err

Esto envía el flujo de salida estándar a myoutput.txt y el flujo de error estándar a output.err. El resultado es que no se muestra ningún flujo de salida en la ventana de la consola.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 15 - septiembre 12, 2022

Sin embargo, puede ver los mensajes de error escribiendo output.err. Esto abrirá el archivo en su visor de archivos de texto predeterminado.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 17 - septiembre 12, 2022

Como puede ver, cualquier mensaje de error del comando se envía al archivo de error. Al igual que con la salida estándar, puede usar >> en su lugar para agregar el error a los errores de los comandos ejecutados anteriormente.

Redirigir todas las escrituras de salida a un mismo archivo

Todos los enfoques anteriores dan como resultado varios archivos. Un archivo es para el flujo de salida estándar y el otro es para el flujo de error estándar.

Si desea incluir ambas salidas en el mismo archivo, también puede hacerlo. Para hacer esto, solo necesita redirigir todos los resultados al mismo archivo usando el siguiente comando.

 Dir prueba.exe 1> misalida.txt 2>&1

Así es como funciona este comando:

  • La salida estándar se dirige al archivo de salida identificado por el número de salida 1.
  • La salida de error estándar identificada con el número 2 se redirige al archivo de salida identificado con el número 1.

Esto agregará la salida de error al final de la salida estándar.

Redirigir la salida desde la línea de comando de Windows a un archivo de texto - 19 - septiembre 12, 2022

Esta es una forma útil de ver todos los resultados de cualquier comando en un archivo.

Silenciar flujos de salida estándar o de error

También puede desactivar la salida estándar o el error estándar redirigiendo la salida a un NUL en lugar de a un archivo.

Usando el ejemplo anterior, si solo desea Salida estándar y ningún error estándar, puede usar el siguiente comando:

 Dir prueba.exe 1> misalida.txt 2>nul

Esto dará como resultado el mismo archivo de salida que el primer ejemplo anterior, donde solo redirigió la salida estándar, pero con este comando, el error no se repetirá dentro de la consola. Tampoco creará un archivo de registro de errores.

Esto es útil si no le importan los errores y no quiere que se conviertan en una molestia.

Puede ejecutar cualquiera de los mismos comandos de salida anteriores desde dentro de un archivo BAT y la salida de esa línea irá al archivo de salida que especifique. Esta es una forma útil de ver si algún comando dentro de un archivo BAT tuvo algún error cuando intentó ejecutarse.