Bat para copiar una carpeta y subcarpetas a otra ubicación y agregar la fecha para diferenciar la copia semanal

Necesito hacer un backup semanal de la carpeta A con subcarpetas A1, A2, A3 pero no debo reemplazar los anteriores backups, es decir que exista A de la semana 1, A de la semana 2 y A de la semana 3

1 respuesta

Respuesta

Si te entiendo bien quieres hacer algo como una estructura de backups con 52 ramas, una por cada semana del año. Algunas preguntas:

  1. ¿Cuándo vas a ejecutar el BAT del backup semanal?
  2. ¿Cómo te aseguras de que el contenido de A corresponde a una semana determinada?
  3. ¿Vas a "limpiar" el contenido de la carpeta A y sus subcarpetas cuando hayas hecho el backup?

De momento te puedo facilitar un BAT que te permite averiguar a que semana del año corresponde una fecha. Sería este:

@echo off&setlocal
call :SemanaFecha %1 %2 %3 ss
echo La fecha %1/%2/%3 corresponde a la semana %ss%
goto :EOF
:SemanaFecha %dd% %mm% %aa% ss
setlocal ENABLEEXTENSIONS
set dd=%1&set mm=%2&set aa=%3
if 1%aa% LSS 200 if 1%aa% LSS 170 (set aa=20%aa%) else (set aa=19%aa%)
set /a dd=100%dd%%%100,mm=100%mm%%%100
set /a z=14-mm,z/=12,a=aa+4800-z,m=mm+12*z-3,Jd=153*m+2
set /a Jd=Jd/5+dd+a*365+a/4-a/100+a/400-32045
set /a a=aa+4798,Jp=a*365+a/4-a/100+a/400-31738,t=Jp+3,Jp=t-t%%7
set /a a=aa+4799,Jt=a*365+a/4-a/100+a/400-31738,t=Jt+3,Jt=t-t%%7
set /a a=aa+4800,Jn=a*365+a/4-a/100+a/400-31738,t=Jn+3,Jn=t-t%%7
set /a Jr=%Jp%,yn=aa-1,yn+=Jd/Jt,yn+=Jd/Jn
if %Jd% GEQ %Jn% (set /a Jr=%Jn%) else (if %Jd% GEQ %Jt% set /a Jr=%Jt%)
set /a diff=Jd-Jr,ss=diff/7+1
if %ss% LSS 10 set ss=0%ss%
endlocal&set %4=%ss%&goto :EOF

Si lo salvas como SEMANA.BAT (por ejemplo) y lo invocas así:

semana 15 10 2020

te sacará

La fecha 15/10/2020 corresponde a la semana 42

La rutina SemanaFecha está adaptada de la DateToWeek extraída de http://www.commandline.co.uk/cmdfuncs/dandt/#datetodays 

Acabo de comprobar que el enlace que puse ya no funciona. Ahora habría que recurrir a https://ritchielawrence.github.io/batchfunctionlibrary/#date-and-time-functions 

¿Qué pasó con este asunto? ¿Ha dejado de interesarte?

Para ver si la página funciona

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas