Redirigir la salida desde la línea de comandos 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.

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(How Windows Command Prompt Output Works)

Cuando escribe un comando en la consola de Windows ( símbolo del sistema(command prompt) ), 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(Standard Error) 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á " (DIR)Archivo(File) no encontrado" en el flujo de error estándar .(Standard Error)

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(Redirect Standard Output Write to New File)

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 test.exe > myoutput.txt

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

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

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(Note) : tenga cuidado de cambiar el directorio activo(change the active directory) 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 fue 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 .

La próxima vez que ejecute el mismo comando, se eliminará el archivo de salida anterior. Se volverá a crear un nuevo archivo de salida con la salida del último comando.

Redirigir las escrituras de salida estándar al (Standard Output)mismo archivo(Same File)

¿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 test.exe >> myoutput.txt

Verá el mismo resultado (solo el error).

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

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(Redirect Standard Error To a File)

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 test.exe > myoutput.txt 2> output.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.

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

Como puede ver, cualquier mensaje de error del comando se envía al archivo de error. Al(Just) 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(Redirect All Output Writes to a Same File)

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 test.exe 1> myoutput.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.

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(Silencing Standard or Error Output Streams)

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

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

dir test.exe 1> myoutput.txt 2>nul

Esto dará como resultado el mismo archivo de salida que el primer ejemplo anterior, donde solo redirigió la Salida estándar(Standard Output) , 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(inside a BAT file) 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.



About the author

Ingeniero audiófilo y especialista en productos de audio con más de 10 años de experiencia. Me especializo en la creación de altavoces y auriculares para música de calidad de principio a fin. Soy un experto en la solución de problemas de audio, así como en el diseño de nuevos sistemas de altavoces y auriculares. Mi experiencia va más allá de hacer buenos productos; También me apasiona ayudar a otros a ser lo mejor posible, ya sea a través de la educación o el servicio comunitario.



Related posts