Con Windows Server 2008, ¿cómo puedo capturar la salida de un script que se está ejecutando con el programador de tareas de Windows?
Estoy probando un script por lotes de impresión personalizado bastante largo y, para fines de depuración, me gustaría ver todos los resultados de él todas las noches.
batch-file
scheduled-tasks
Mechaflash
fuente
fuente
Respuestas:
Pruebe esto como la cadena de comando en el Programador de tareas:
fuente
cmd /c "path with spaces/command.cmd > file.txt"
si tiene espacios. La respuesta2>&1
de Ivan también va dentro de las comillas.cmd /c ""C:\temp\My test dir\something 123\myTool.exe" > Tilo_log.txt 2>&1"
Con stderr (donde van la mayoría de los errores):
fuente
Para complementar la respuesta de @ user2744787, aquí hay una captura de pantalla para mostrar cómo usar
cmd
con argumentos en una tarea programada:Programa / guión:
cmd
Agregue argumentos:
/c run_with_default_port.bat > IMQuantWebServices.log
fuente
El
>>
agregará el archivo de registro, en lugar de sobrescribirlo cada vez. El2>&1
también enviará errores en el archivo de registro.fuente
Puede tener un debug.cmd que llame a yourscript.cmd
programa debug.cmd en lugar de yourscript.cmd
fuente
Utilice el
cmd.exe
procesador de comandos para crear un nombre de archivo con marca de tiempo para registrar la salida de su tarea programadaPara aprovechar las respuestas de otros aquí, es posible que desee crear un archivo de salida que tenga la fecha y / o la hora incrustadas en el nombre del archivo. Puede utilizar el
cmd.exe
procesador de comandos para hacer esto por usted.Nota: Esta técnica toma la salida de cadena de las variables de entorno internas de Windows y las divide en función de la posición del carácter. Debido a esto, es posible que los valores exactos proporcionados en los ejemplos siguientes no sean correctos para la región de Windows que utiliza. Además, con algunas configuraciones regionales, algunos componentes de la fecha u hora pueden introducir un espacio en el nombre del archivo construido cuando su valor es menor que 10. Para mitigar este problema, rodee el nombre del archivo con comillas para que los espacios no deseados en el archivo name no romperá la línea de comandos que está construyendo. Experimente y encuentre lo que mejor se adapte a su situación.
Tenga en cuenta que
PowerShell
es más poderoso quecmd.exe
. Una forma en que es más poderoso es que puede tratar con diferentes regiones de Windows. Pero esta respuesta trata de resolver este problema usandocmd.exe
, noPowerShell
, así que continuamos.Utilizando
cmd.exe
Puede acceder a diferentes componentes de la fecha y la hora dividiendo las variables de entorno internas
%date%
y%time%
, de la siguiente manera (nuevamente, los valores de división exactos dependen de la región configurada en Windows):%date:~10,4%
%date:~4,2%
%date:~7,2%
%time:~0,2%
%time:~3,2%
%time:~6,2%
Suponga que desea que su archivo de registro reciba un nombre con este formato de fecha / hora: "
Log_[yyyyMMdd]_[hhmmss].txt
". Usarías lo siguiente:Para probar esto, ejecute la siguiente línea de comando:
Poniéndolo todo junto, para redirigir ambos
stdout
ystderr
desde su secuencia de comandos a un archivo de registro con el nombre de la fecha y hora actuales, use lo siguiente como línea de comando:Tenga en cuenta el uso de comillas alrededor del nombre del archivo para manejar casos en los que un componente de fecha u hora puede introducir un carácter de espacio.
En mi caso, si la fecha / hora actual fuera 10/05/2017 9:05:34 AM, la línea de comando anterior produciría lo siguiente:
fuente
Puede escribir en un archivo de registro en las líneas que desea generar de esta manera:
De esta manera, puede elegir qué comandos generar si no desea rastrear todo, solo obtenga lo que necesita ver. La
>
enviará al archivo especificado (creando el archivo si no existe y sobrescribiéndolo si existe). los>>
agregará al archivo especificado (creando el archivo si no existe, pero agregando al contenido si existe).fuente
Ejemplo de cómo ejecutar el programa y escribir stdout y stderr en un archivo con marca de tiempo:
La parte clave es comillas dobles la parte completa detrás
cmd /c
y dentro de ella use comillas dobles como de costumbre. También tenga en cuenta que la fecha depende de la configuración regional, este ejemplo funciona con la configuración regional de EE. UU.fuente
Este fragmento usa wmic.exe para construir la cadena de fecha. No está alterado por la configuración regional
fuente