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.





36500 Visitas Totales 12 Visitas para Hoy

25 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!

  2. Hola, me sirvió... AHORA!... siendo administrador de red necesito algo puntual que es como resultado de nombre de archivo .txt en vez de mostrar hora y dia necesito que muestre el resultado del comando "hostname" que es el nombre de la PC de la cual estoy extrayendo datos.
    Te agradezco de antemano. Saludos.

  3. Hola. Pregunta de novato. ¿Cuál sería la sintaxis del código si en vez de querer insertar en el nombre del archivo la fecha de hoy quisiera tomar la fecha de impresión de origen que puede verse en la solapa detalles de las propiedades del archivo? ¿Me explico? Tengo un lote de archivos que fueron creados en un período de varios años. Y necesito que cada uno de ellos lleve delante AA-MM-DD de, como comenté, fecha de impresión original. Ojalá puedan ayudarme. Muy bueno el sitio, es de consulta permanente.
    Saludos desde Argentina

    • Buenas,

      No entiendo a qué te refieres exactamente con fecha de impresión original... Parece que te refieres a alguna metainformación de algún fichero imprimible.

      En cualquier caso, lo que explica la entrada es cómo coger la fecha y hora actual del sistema (comandos date y time) y añadirlos al nombre del fichero; que no es lo mismo que coger metainformación de un fichero. Desconozco cómo hacerlo exactamente, pero quizás puedas encontrar algo que te sirva en la herramienta WMIC de Windows.

  4. Sebastian Castro

    Muchas gracias, muy bien explicado.
    ¿Cómo podría escribir dentro de ese mismo txt creado solo la hora?
    Gracias de antemano.

  5. Muchas gracias por la explicación me ayudaste a resolver un problema con el nuevo modo de mostrar la fecha en las versiones actuales del windows 10 y server 2016 ya que ahora coloca al principio las iniciales del dia +fecha, ejemplo; jue. 21/04/2022 y le rutina fallaba porque antes usaba server 2008-
    Muchas gracias por explicar.

  6. Hola, y como se podría hacer para que agregar la fecha y la hora a todos los archivos de una carpeta.

    El ejercicio es:
    1. En una carpeta se colocan archivos generados desde otra app.
    2. Yo necesito mover los archivos en una segunda carpeta, agregando fecha y hora, para saber cuando realmente lo moví y si el archivo se generó en tiempo y forma.
    3. El problema es que los archivos generados tienen diferentes nombres.

    ojala que me pudieran apoyar.

  7. Juan Manuel Carrillo Campos

    Hola,
    Quiero renombrar un archivo con la fecha en que fue creado y lo intento con esto:
    set fechaYhora=%~t1
    set fecha=%fechaYhora:~0,10%
    Pero en fecha me deja un espacio en blanco! como lo evito o elimino?
    Gracias por la ayuda que puedan prestarme!
    Saludos.