¿Cómo puedo capturar la salida de un script si está siendo ejecutado por el programador de tareas?


Usando 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 toda la salida de él todas las noches.

Author: Mechaflash, 2011-12-29

7 answers

Puede tener una depuración.cmd que llama a yourscript.cmd

yourscript.cmd > logall.txt

Se programa la depuración.cmd en lugar de yourscript.cmd

 31
Author: rene,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-03-06 10:09:35

Pruebe esto como la cadena de comandos en el Programador de tareas:

cmd /c yourscript.cmd > logall.txt
 60
Author: user2744787,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-09-03 23:50:18

Con stderr (donde van la mayoría de los errores):

cmd /c yourscript.cmd > logall.txt 2>&1
 39
Author: Ivan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-06 17:03:43

El >> anexará el archivo de registro, en lugar de sobrescribirlo cada vez. El 2>&1 también enviará errores a su archivo de registro.

cmd /c YourProgram.exe >> log.txt 2>&1
 25
Author: WhiteHotLoveTiger,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-25 14:23:23

Para complementar la respuesta de @user2744787, aquí hay una captura de pantalla para mostrar cómo usar cmd con argumentos en una tarea programada:

introduzca la descripción de la imagen aquí

 21
Author: kevinarpe,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-03-23 03:47:33

Puede escribir en un archivo de registro en las líneas que desea generar de esta manera:

@echo off
echo Debugging started >C:\logfile.txt
echo More stuff
echo Debugging stuff >>C:\logfile.txt
echo Hope this helps! >>C:\logfile.txt

De esta manera, puede elegir qué comandos desea generar si no desea rastrear todo, solo obtenga lo que necesita ver. El > lo enviará al archivo especificado (creando el archivo si no existe y sobrescribiéndolo si existe). El >> se agregará al archivo especificado (creando el archivo si no existe, pero anexando al contenido si existe).

 6
Author: Bali C,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2011-12-29 09:26:18

Utilice el procesador de comandos cmd.exe para crear un nombre de archivo con marca de tiempo para registrar la salida de la tarea programada

Para construir sobre las respuestas de otros aquí, puede ser que desee crear un archivo de salida que tenga la fecha y/o la hora incrustada en el nombre del archivo. Puede usar el procesador de comandos cmd.exe 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 según la posición del carácter. Debido a esto, los valores exactos proporcionados en los ejemplos a continuación pueden no ser 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 nombre del archivo no rompan la línea de comandos que está construyendo. Experimentar y encontrar lo que funciona mejor para su situación.

Tenga en cuenta que PowerShell es más poderoso que cmd.exe. Una forma en que es más potente es que puede tratar con diferentes regiones de Windows. Pero esta respuesta se trata de resolver este problema usando cmd.exe, no PowerShell, así que continuamos.

Usando cmd.exe

Puede acceder a diferentes componentes de la fecha y la hora al dividir las variables de entorno internas %date% y %time%, de la siguiente manera (nuevamente, los valores exactos de corte dependen de la región configurada en Windows):

  • Año (4 dígitos): %date:~10,4%
  • Mes (2 dígitos): %date:~4,2%
  • Día (2 dígitos): %date:~7,2%
  • Hora (2 dígitos): %time:~0,2%
  • Minuto (2 dígitos): %time:~3,2%
  • Segundo (2 dígitos): %time:~6,2%

Supongamos que desea que su archivo de registro se nombre usando este formato de fecha/hora: "Log_[yyyyMMdd]_[hhmmss].txt". Usarías lo siguiente:

Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt

Para probar esto, ejecute la siguiente línea de comandos:

cmd.exe /c echo "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt"

Poniéndolo todo juntos, para redirigir stdout y stderr desde su script a un archivo de registro nombrado con la fecha y hora actuales, use podría usar lo siguiente como línea de comandos:

cmd /c YourProgram.cmd > "Log_%date:~10,4%%date:~4,2%%date:~7,2%_%time:~0,2%%time:~3,2%%time:~6,2%.txt" 2>&1

Tenga en cuenta el uso de comillas alrededor del nombre del archivo para manejar instancias 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 comandos anterior produciría lo siguiente:

cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1
 5
Author: STLDeveloper,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-10-04 04:58:05