Cómo crear carpeta con fecha actual?

Estoy programando en cmd un comando que me permita crear una carpeta de respaldo, este se ejecutaría diario mediante una tarea de windows, pero no logro que la carpeta contenga el nombre del día en que fue creada, ¿cómo podría hacerlo?

Este sería el comando que crea la carpeta, sólo que no llega a renombrar la carpeta con la fecha de creacion

@echo off 
set carpeta=C:\Users\luis_\Desktop\respaldos
set aaaa=%Date:~6,4%
set mm=%Date:~3,2%
set dd=%Date:~0,2%
set hh=%Time:~0,2%
set mi=%Time:~3,2%
if %hh% lss 10 set hh=%hh: =0%
set nombre=%dd%-%mm%-%aaaa%
cd "%carpeta%"
md nombre
ren C:\Users\luis_\Desktop\respaldos\nombre %nombre%

2 Respuestas

Respuesta
2

Ya pude, usé este comando

@echo off 
set carpeta=C:\Users\luis_\Desktop\respaldos
for /f %%x in ('wmic path win32_utctime get /format:list ^| findstr "="') do set %%x
set today=%Year%-%Month%-%Day%
pushd %carpeta%
for /f "tokens=* delims=" %%x in ('dir /s /b /ad %carpeta%*.*') do md "%%x\%today%"
Popd
Respuesta
1

Aunque ya hayas resuelto tu problema (por cierto, tu solución me ha enseñado alguna cosa, porque no acababa de entender el SET %%X del primer FOR y he visto que es un gran hallazgo) no puedo por menos que intentar aclarar por qué no te funcionaba el BAT que incluyes en la pregunta. Lo he corregido así:

@echo off 
set carpeta=C:\Users\luis_\Desktop\respaldos
set aaaa=%Date:~6,4%
set mm=%Date:~3,2%
set dd=%Date:~0,2%
set nombre=%dd%-%mm%-%aaaa%
cd "%carpeta%"
Md %nombre%

De modo que, esencialmente, lo único que estaba mal era que en el MD faltaban los "%" de la variable NOMBRE y el último comando REN no tiene ninguna utilidad, además de que le ocurre lo mismo a esa variable. El orden de los campos DIA, MES y AÑO es el contrario al que has usado luego, pero eso, obviamente, no tiene ninguna importancia

Gracias por explicarme, la verdad la solución no la hice yo como tal, sólo hice un frankenstein de códigos que encontré en diversas páginas y foros, así que agradecería si pudieras explicarme esa línea

Si ejecutas el comando del FOR:

wmic path win32_utctime get /format:list | findstr "="

Obtienes algo como:

C:\>wmic path win32_utctime get /format:list | findstr "="
Day=21
DayOfWeek=2
Hour=17
Milliseconds=
Minute=50
Month=12
Quarter=4
Second=53
WeekInMonth=4
Year=2021

De modo que el SET %%x se convierte en:

set Day=21
set DayOfWeek=2
set Hour=17
set Milliseconds=
set Minute=50
set Month=12
set Quarter=4
set Second=53
set WeekInMonth=4
set Year=2021

Y luego usas las variables que te interesen (en tu caso Day, Month y Year)

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas