Estoy usando un script de línea de comandos para ajustar múltiples configuraciones en una computadora. Sin embargo, me gustaría que toda la salida también se registre en un archivo .txt o .log.
Cuando uso mi conocimiento básico del sistema de registro, colocará la salida en un archivo pero en realidad no lo ejecutará. En mi caso, necesitaría ejecutarlo y luego iniciar sesión en un archivo para referencia posterior.
¿Alguien podría decirme cómo hacer esto?
¡Gracias por adelantado! Dempsey
command-line
logging
cmd.exe
Dempsey FoxDie Van Assche
fuente
fuente
Respuestas:
Si la pregunta solicita que se "ejecute" un script y que todo el archivo por lotes se envíe a un archivo de registro en Windows 8.1, entonces esta es la respuesta simple:
Incluya esto al comienzo de su archivo por lotes ...
fuente
En su pregunta, menciona:
Como usted dice que el programa se está ejecutando y su salida se está colocando en el archivo, pensé que podría haber querido decir "mostrado" , en lugar de "ejecutado" .
Si eso no es lo que quisiste decir, entonces probablemente hubiera sido útil explicarlo mejor, tal vez con algún resultado de muestra.
En cualquier caso, estoy publicando esta respuesta en caso de que haya otros que consideren útil esta pregunta / respuesta.
Entonces, básicamente, parece que desea que la salida de una secuencia de comandos se capture en un archivo, y también poder ver la salida de la secuencia de comandos en la pantalla mientras se ejecuta la secuencia de comandos.
(tl; versión dr: use wintee , así:
script 2>&1 | wtee logfile.txt
)Para esta publicación, usaré un pequeño archivo por lotes de prueba, pero su script podría ser tan grande y complicado o tan simple como lo necesite:
Esto es lo que sucede cuando ejecuto este script por lotes:
Observe que en el script de prueba, la primera ejecución del comando "dir" es exitosa y la segunda falla. Hago esto solo para mostrar lo que sucederá con los "mensajes de error" cuando ejecute su script.
Si ejecuto el script y uso la redirección ( ">" ) para capturar la salida, veré esto
Observe que el mensaje de error "Archivo no encontrado" se mostró en la pantalla cuando se ejecutó la secuencia de comandos, y en realidad no se capturó en el archivo. Esto se debe a que ">" captura la "salida normal" que se ha enviado a la secuencia STDOUT. Los "mensajes de error" se envían normalmente a la secuencia STDERR.
Para capturar "salida normal" y "mensajes de error", también debe capturar la secuencia STDERR, que se indica mediante el "2" en "2> & 1" en el comando aquí:
En unix, hay un comando estándar:
"tee"
Usando el comando "tee", puede capturar la salida de un programa, y también mostrar la salida en la pantalla, al mismo tiempo.
El comando "tee" no es estándar con Windows, pero puede descargar una versión gratuita de "tee" para Windows aquí: wintee . El programa descargado se llama:
"wtee.exe"
.Utiliza el programa "wtee.exe" como se muestra a continuación.
Esto capturará la salida del script en el archivo nombrado
"log.txt"
como antes, y también mostrará el resultado en la pantalla mientras se ejecuta el script:fuente
Este script ejecutará ls y registrará su salida en un archivo llamado log.txt:
El registro no se ejecutará.
fuente