Buenas! volvemos esta vez con este post que deseamos que te sea muy útil y resuelva tus dudas ¡Vamos a ello!
Una de las formas más útiles de registrar y solucionar problemas del comportamiento de 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
Cuando escribe un comando en la consola de Windows (símbolo del sistema), la salida de ese comando va a dos flujos separados.
- STDOUT: Salida estándar 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 archivos en el directorio, el comando DIR generará “Archivo no encontrado” en la secuencia de errores 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. La primera es enviar la escritura de salida del comando a un nuevo archivo 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 emita 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.

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 manera 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, 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 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 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
De la misma manera que puede redirigir las escrituras de salida estándar a un archivo, también puede enviar la secuencia 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ás 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 igual que con la salida estándar, puede utilizar >> en lugar de agregar el error a los errores de 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 toda la salida 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 la salida número 1.
- La salida de error estándar identificada por el número 2 se redirige al archivo de salida identificado por 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
También puede desactivar la salida estándar o el error estándar redirigiendo la salida a un NUL en lugar de un archivo.
Usando el ejemplo anterior, si solo desea Salida estándar y ningún Error estándar, 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, 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 preocupan los errores y no quiere que se conviertan en una molestia.
Puede realizar 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 tenía algún error cuando intentaba ejecutarse.