Añadir fecha y hora al nombre de un archivo en la consola de comandos de Windows

Habitualmente suelo trabajar con la consola de comandos de Windows y con scripts .BAT. Una de las tareas mas habituales es generar outputs en forma de fichero y una buena práctica suele ser añadir al nombre del fichero la fecha y la hora.

Una forma sencilla de mostrar la fecha en la consola de comandos de Windows es poner el siguiente comando:

echo %date%

Y la forma de mostrar la hora es:

echo %time%

Sabiendo esto podemos pasar al siguiente paso para poder añadirlo al nombre de un fichero. Como has podido observar al obtener la fecha, la obtenemos con el signo «/» intercalado entre el día, mes y año. Del mismo modo la hora aparece separada por el signo «:» , para separar las horas, los minutos y los segundos. Además la parte de los segundo viene con «,» para marcar los decimales para las décimas de segundo. Los tres símbolos citados, no están permitidos a la hora de incluirlos en un nombre de un fichero en Windows, por lo que procedemos a quitarlos de la siguiente manera:

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

Si analizamos el código, lo que se hace es una concatenación de valores que se imprimen como nombre. La fecha se le da la vuelta porque a la hora de ordenar por nombre, a nombres iguales se puede ordenar por años con una simple ordenación por orden alfabético. En el caso de la hora no es necesario darle la vuelta.

Para cada variable date o time se cogen los caracteres que nos interesan de la siguiente forma:

%variable:~startIndex,numChars%

startIndex determina la posición desde la que se empiezan a coger los caracteres dentro de la variable. El índice empieza en 0 y también puede ser negativo el índice, indicando la posición de inicio desde el final de la variable.

numChars determina el número de caracteres que se van a coger desde el startIndex fijado.

cmd-win-append-date-time

De esta forma y extrapolándolo  a otros comando, es posible añadir fecha y hora, sólo fecha o solo hora al nombre de un fichero de un output de un comando.

8968 Visitas Totales 2 Visitas para Hoy

11 response on “Añadir fecha y hora al nombre de un archivo en la consola de comandos de Windows

  1. Victor Casajuana Mas

    Hola Rubén.
    Me ha servido este post, le añadiría lo siguiente para quitar los espacios en blanco que genera al procesar un time con la hora menor a dos dígitos.
    Tal y como lo tienes tú el siguiente dato: 3/12/19 9:36:44 quedaría así:
    2019-12-03_ 9-36-44
    con un espacio en blanco entre _ y 9 por lo que el nombre del fichero no es correcto.
    Asignando el resultado de tu fórmula a una variable, luego aplicas la eliminación de espacios:
    set variable=%variable: =%
    y con esto ya obtenemos un nombre correcto sin espacios:
    2019-12-03_9-36-44
    Gracias y un Saludo!

Deja un comentario