La forma sencilla e ingenua que es lenta porque abre y coloca el puntero del archivo al final del archivo varias veces.
@echo off
command1 >output.txt
command2 >>output.txt
...
commandN >>output.txt
Una forma mejor: más fácil de escribir y más rápida porque el archivo se abre y se coloca solo una vez.
@echo off
>output.txt (
command1
command2
...
commandN
)
Otra forma buena y rápida que solo abre y coloca el archivo una vez
@echo off
call :sub >output.txt
exit /b
:sub
command1
command2
...
commandN
Editar 2020-04-17
De vez en cuando, es posible que desee escribir repetidamente en dos o más archivos. También es posible que desee diferentes mensajes en la pantalla. Todavía es posible hacer esto de manera eficiente redirigiendo a identificadores no definidos fuera de un bloque o subrutina entre paréntesis, y luego usar la &
notación para hacer referencia a los archivos ya abiertos.
call :sub 9>File1.txt 8>File2.txt
exit /b
:sub
echo Screen message 1
>&9 File 1 message 1
>&8 File 2 message 1
echo Screen message 2
>&9 File 1 message 2
>&8 File 2 message 2
exit /b
Elegí usar los identificadores 9 y 8 en orden inverso porque de esa manera es más probable que se evite una posible redirección permanente debido a un defecto de diseño de implementación de redirección de Microsoft al realizar múltiples redirecciones en el mismo comando. Es muy poco probable, pero incluso ese enfoque podría exponer el error si se esfuerza lo suficiente. Si organizas la redirección, tienes la garantía de evitar el problema.
3>File1.txt ( 4>File2.txt call :sub)
exit /b
:sub
etc.
%~f0
siempre proporciona la ruta completa al script por lotes, incluso cuando está dentro de una subrutina CALLed :.>output.txt 2>&1
cmd /?
ohelp cmd
desde la línea de comandos de la consola para obtener documentación. El truco del tercer método es que la redirección en CALL se aplica a todos los comandos dentro de la subrutina CALLed.si desea redirigir las transmisiones de salida y error
fuente
>>
agregará aa.txt
. Para sobrescribir en sua.txt
lugar, use>
. stackoverflow.com/q/4458231/1098302Sé que esta es una publicación más antigua, pero alguien se encontrará con ella en una búsqueda de Google y también parece que algunas preguntas que hizo el OP en los comentarios no se abordaron específicamente. Además, tenga cuidado conmigo, ya que esta es mi primera respuesta publicada en SO. :)
Para redirigir la salida a un archivo utilizando un nombre de archivo generado dinámicamente, mi enfoque de referencia (leer: rápido y sucio) es la segunda solución ofrecida por @dbenham. Entonces, por ejemplo, esto:
Creará un archivo como el que ves en esta captura de pantalla del archivo en el directorio de destino
Eso contendrá esta salida:
También tenga en cuenta que esta solución depende de la configuración regional, así que tenga cuidado de cómo y cuándo la usa.
fuente
o
debe llenar la factura.
Si desea
APPEND
la salida, use en>>
lugar de>
.>
iniciará un nuevo archivo de registro.fuente
fuente
Hay un pequeño programa genial que puede usar para redirigir la salida a un archivo y la consola
Mostrar fragmento de código
fuente
Agregue estas dos líneas cerca de la parte superior de su archivo por lotes, todos los stdout y stderr posteriores serán redirigidos a log.txt:
fuente
Usé el comando anterior en mi archivo por lotes y funciona. En el archivo de registro, muestra los resultados de mi comando.
fuente
Esto puede fallar en el caso de caracteres "tóxicos" en la entrada. Teniendo en cuenta una entrada como esta, IsAnIn ^^^^ poner es una buena manera de entender lo que está sucediendo. Seguro que hay una regla de que una cadena de entrada DEBE estar entre comillas dobles, pero tengo la sensación de que esta regla es una regla válida solo si el significado de la entrada es una ubicación en una partición NTFS (tal vez sea una regla para las URL I no estoy seguro). Pero no es una regla para una cadena de entrada arbitraria, por supuesto (es "una buena práctica" pero no puede contar con ella).
fuente
Agregar las siguientes líneas en la parte inferior de su archivo por lotes tomará todo tal como se muestra dentro de la ventana CMD y lo exportará a un archivo de texto:
Básicamente realiza una selección de todo -> copiar al portapapeles -> pegar en el archivo de texto .
fuente