Script de copia de seguridad para Robocopy

Estoy intentando hacer un script que me permita realizar una copia de seguridad en forma automática por día de Semana (de lunes a Viernes) no por fecha, en un bat.

Les paso el Script.bat que utilice, pero no me sirve ya que me crea carpeta por fechas y necesito por días, y una vez pasada la semana se rescriban, así evitar que el disco se llene.

Echo off
echo "Creando carpeta..."
set dia_actual=%date:/=-%
set destino_backup=D:\Backup\%dia_actual%
set origen_backup=\\Produccion\usuarios\
mkdir %destino_backup%
echo "Copiando ficheros..."
robocopy %origen_backup% %destino_backup% /S /E /R:0 /NP /Log:%destino_backup%\%dia_actual%.log /NJS
if errorlevel 4 echo Error en la copia & goto Copia_Error
if errorlevel 1 echo Copia finalizada correctamente & goto Copia_Correcta
if errorlevel 0 echo Copia finalizada correctamente sin cambios & goto Copia_Correcta_Sin_Cambios
:Copia_Error
msg * Se ha producido un error en la copia.
Pause
exit
:Copia_Correcta
msg * Copia realizada correctamente.
Pause
exit
:Copia_Correcta_Sin_Cambios
msg * Copia realizada correctamente sin cambios.
Pause
exit

Alguien que me pueda guiar?

Respuesta
1

Les paso el comando por la dudas si hay alguien que quiera hacer lo mismo, le puede llegar a servir.

Echo off
echo "Creando carpeta..."
For /f %%# In ('WMIC Path Win32_LocalTime Get DayOfWeek^|Findstr [0-6]') Do (Set DOW=%%#)
if "%dow%" == "0" set diasem=Domingo
if "%dow%" == "1" set diasem=Lunes
if "%dow%" == "2" set diasem=Martes
if "%dow%" == "3" set diasem=Miercoles
if "%dow%" == "4" set diasem=Jueves
if "%dow%" == "5" set diasem=Viernes
if "%dow%" == "6" set diasem=Sabado
echo "%diasem%"
set dia_log=%date:/=-%
echo "%dia_log%" 
set dia_actual=%diasem%
set destino_backup=D:\Backup\%dia_actual%
set origen_backup=\\Produccion\usuarios
mkdir %destino_backup%
echo "Copiando ficheros..."
robocopy %origen_backup% %destino_backup% /S /E /R:0 /Log:%destino_backup%\%dia_log%.log
if errorlevel 4 echo Error en la copia & goto Copia_Error
if errorlevel 1 echo Copia finalizada correctamente & goto Copia_Correcta
if errorlevel 0 echo Copia finalizada correctamente sin cambios & goto Copia_Correcta_Sin_Cambios
:Copia_Error
msg * Se ha producido un error en la copia.
pause
exit
:Copia_Correcta
msg * Copia realizada correctamente.
pause
exit
:Copia_Correcta_Sin_Cambios
msg * Copia realizada correctamente sin cambios.
pause
exit

Esta parte es la que obtiene los días de semana por nombre (Domingo = 0, Lunes = 1, Martes =2, Miércoles = 3, Jueves = 4, Viernes = 5 y Sábado = 6)

For /f %%# In ('WMIC Path Win32_LocalTime Get DayOfWeek^|Findstr [0-6]') Do (Set DOW=%%#)
if "%dow%" == "0" set diasem=Domingo
if "%dow%" == "1" set diasem=Lunes
if "%dow%" == "2" set diasem=Martes
if "%dow%" == "3" set diasem=Miercoles
if "%dow%" == "4" set diasem=Jueves
if "%dow%" == "5" set diasem=Viernes
if "%dow%" == "6" set diasem=Sabado
echo "%diasem%"

Y esta es para hacer el Backus en la unidad D. El mismo script crea la carpeta con el nombre del día y ahí realiza el Backus. Solo hay que definir el origen y el destino según la necesidad de cada uno, en mi caso es : Origen = \\Produccion\usuario y Destino = D:\Backup. 

set dia_log=%date:/=-%
set dia_actual=%diasem%
set destino_backup=D:\Backup\%dia_actual%
set origen_backup=\\Produccion\usuarios
mkdir %destino_backup%
echo "Copiando ficheros..."
robocopy %origen_backup% %destino_backup% /S /E /R:0 /Log:%destino_backup%\%dia_log%.log
if errorlevel 4 echo Error en la copia & goto Copia_Error
if errorlevel 1 echo Copia finalizada correctamente & goto Copia_Correcta
if errorlevel 0 echo Copia finalizada correctamente sin cambios & goto Copia_Correcta_Sin_Cambios
:Copia_Error
msg * Se ha producido un error en la copia.
pause
exit
:Copia_Correcta
msg * Copia realizada correctamente.
pause
exit
:Copia_Correcta_Sin_Cambios
msg * Copia realizada correctamente sin cambios.
pause
exit

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas