Utilice el cmd.exe
procesador de comandos para crear un nombre de archivo con marca de tiempo para registrar la salida de su tarea programada
Para 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 que cmd.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 usando cmd.exe
, no PowerShell
, 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):
- 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%
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:
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 comando:
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 junto, para redirigir ambos stdout
y stderr
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:
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 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:
cmd /c YourProgram.cmd > "Log_20171005_ 90534.txt" 2>&1