Copia de seguridad .bat con winrar

Estoy intentando crear un .bat que realice una copia de seguridad de una base de datos, que copie la base y la comprima en un archivo .rar con el mismo nombre de la base, crear una tarea programada para que lo realice diariamente, el inconveniente es que no logro que comprima el archivo, simplemente se copia, el programador de tareas simplemente se salta el comando, estoy trabajando en Windows 7 y Windows 10, en ninguno funciona con la tarea programada, si lo ejecuto manualmente si funciona.

rem copia de la base
robocopy H:\origen H:\destino1 /E /MaxAge:1 /xf *.Bases_de_datos_procelec
rem compresion 
for %%F in (*.bak) do "C:\Program Files\WinRAR\WinRAR.exe" a -ad -o- -r -df -m5 "%%F.rar" "%%F"
rem copia del archivo comprimido al destino fianl
robocopy H:\destino H:\Carpeta_backup /MOVE /MaxAge:1 /xf *.bat

1 respuesta

Respuesta
1

Perdona, pero, después de sugerirte que abrieras una nueva pregunta sobre este tema, no me salía por ninguna parte. Acabo de verla ahora, casi dos días más tarde.

Del bat que aportas deduzco lo siguiente:

  1. La base a copiar reside en H:\origen y de ella se copian a H:\destino1 todos los archivos que tengan menos de un día de antigüedad salvo los que tengan como "extensión" "Bases_de_datos_procelec"
  2. A continuación se comprimen de uno en uno (un RAR por archivo) todos los archivos con extensión BAK. No hay constancia de sobre que carpeta se está trabajando, la misma en la que reside el BAT, pero no se ve la relación con lo anterior ni con lo siguiente.
  3. Por último se mueven de H:\destino (no de H:\destino1, contra lo que podría parecer más razonable) a H:\Carpeta_backup todos los archivos que tengan menos de un día de antigüedad salvo los BAT

Dices que ese BAT hace lo que esperas cuando lo ejecutas manualmente (crear un archivo RAR con el mismo nombre que la base) pero que no funciona como tarea programada. Sería interesante que sacaras la información de la tarea programada que debe lanzar el BAT y la pegaras por aquí. Te pongo un ejemplo de la información que solicito (hablo de entorno Windows10):

Cuando se ejecuta la tarea programada, ¿qué código de ejecución devuelve? (Es una de las columnas del primer pantallazo, "Resultado de última ejecución")

Hola, este es el resultado

Logre que se ejecute el trabajo, pero con un programador de tareas externo llamado"task Till Dawn"

saludos 

Por lo que veo en el pantallazo hay una tarea, de nombre PRUEBA, que se lanzó el 07/07/2022 a las 16:53 y que está "En ejecución" cuando se obtuvo el pantallazo. Supongo que es la tarea que ejecuta tu BAT de Backup pero no sé si esa ejecución se consiguió con el "Task Till Dawn" o si es una ejecución de prueba con el programador de tareas de Windows. Tampoco me queda claro si con esto se resuelve tu problema o no, ni si el backup conseguido se ajusta a tus necesidades.

Saludos,

Se resolvió como se esperaba, con el software externo mencionado, sin embargo, si me quedo la duda de como resolverlo con el programador de tareas de Windows.

Yo me he generado un bat similar al tuyo que no hace casi nada y lo he incluido en una tarea programada y se ha ejecutado a la hora indicada. De modo que habría que ver que pasa con tu tarea programada para compararla con la mía. Por eso te pedía los pantallazos de todas las pestañas del programador de tareas, no solo la de Historial (que, además, en este caso parece no estar habilitado). Para las pruebas sería bueno que le incluyeras un PAUSE como último comando del BAT.

Por lo que veo parece que funciona, ¿no?

Si, gracias ya se resolvió

Saludos

Hola,

ahora estoy probando un código que me ayuda de a borrar las carpetas y su contenido con más de  3 días de antigüedad, he usado el siguiente código:

FORFILES /P "C:\Users\flema\OneDrive\Escritorio\Origen" /s /D -5 /C "CMD /C IF '@isdir'=='TRUE' (RD /S /Q @file) ELSE (DEL /Q @file)"

Pero, solo elimina el contenido de las carpetas más no la carpeta.

No soy muy experto en FORFILES pero por lo que he visto en la ayuda del comando podría ser que la sintaxis correcta fuera:

FORFILES /P "C:\Users\flema\OneDrive\Escritorio\Origen" /s /D -5 /C "CMD /C IF @isdir==TRUE (RD /S /Q @file) ELSE (DEL /Q @file)"

O tal vez:

FORFILES /P "C:\Users\flema\OneDrive\Escritorio\Origen" /s /D -5 /C "CMD /C IF @isdir==TRUE (RD /S /Q @path) ELSE (DEL /Q @path)"

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas