W: Resize to find out!
H: Resize to find out!
Publicado hace: 17 años

Hacer backup en carpeta con nombre de fecha usando un archivo bat

Este finde semana estuve reorganizando la forma como almaceno la información de las webs que manejo y también haciendo copias de respaldo de las mismas, además necesitaba crear backups ordenados por fechas de algunos sitios que aún estoy modificando; esta tarea es sencilla cuando se trata de una o dos carpetas, pero cuando el número se incrementa se torna un tanto repetitiva y trabajosa.

La solución que se me ocurrió fue crear un pequeño archivo bat que realice esta labor por mi de una manera un poco más rápida. Hice una búsqueda rápida en la web y finalmente obtuve el resultado que esperaba.

Coloco el contenido de mi archivo backup a continuación para que pueda ser usado por cualquier persona a quien le interese.

Deberemos reemplazar «Actual» por el nombre de la carpeta que contiene nuestros archivos de origen e indicar el lugar donde se creará la nueva carpeta en mi caso es una carpeta con el nombre Backup

@ECHO OFF
@ECHO RESPALDO DE ARCHIVOS
REM creamos una variable conteniendo la fecha actual con el formato año-mes-dia SET FOLDER=%date:~6,4%-%date:~3,2%-%date:~0,2%
REM Creamos la carpeta donde se guardará la copia de respaldo IF NOT EXIST Backup MKDIR Backup
MKDIR Backup%FOLDER%
REM Seteamos las propiedades del comando XCOPY SET BACKUPCMD=XCOPY /S /C /D /E /H /I /R /Y
REM Ejecutamos la instrucción %BACKUPCMD% Actual. Backup%FOLDER%

El resultado es la copia de los archivos en la carpeta 2007-09-10
Carpeta Backup

ser humano

Music & Design & Photo & Bike.

Test, fail, learn, repeat.

26 Responses to “Hacer backup en carpeta con nombre de fecha usando un archivo bat”

  1. Jesus dice:

    Hola quisiera saber si me pueden ayudar con un archivo .bat necesito respaldar archivos de una carpeta a otra y que se compriman en .rar, pero que la carpeta que se respaldo sea eliminada y solo me quede el puro archivo .rar gracias. les dejo mi script espero puedan ayudarme

    @ECHO OFF
    @ECHO RESPALDO DE ARCHIVOS
    REM creamos una variable conteniendo la fecha actual con el formato año-mes-dia
    SET FOLDER=%date:~6,4%-%date:~3,2%-%date:~0,2%

    REM Creamos la carpeta donde se guardará la copia de respaldo
    REM IF NOT EXIST MKDIR

    MKDIR %FOLDER%

    REM creamos las propiedades del comando XCOPY
    SET CMD=XCOPY /S /C /D /E /H /I /R /Y

    REM Ejecutamos la instrucción
    %CMD% C:\otraspruebas\. %FOLDER%

    Call comprime.bat

    pause

    —————

    @echo off

    REM compress_rar_rev1a.bat

    REM This script compresses files in a folder specified by the user individually or in a single
    REM archive in *.rar format (WinRAR’s default) with the option to include subfolders.
    REM Saved files are placed in the deafault directory specified below unless otherwise noted.
    REM Note: files with the same name but with different extensions will be in the same archive.

    setlocal

    REM Specify the folder to compress below:

    REM ——————————– Folder to compress———————————
    set dir= %FOLDER%
    REM ————————————————————————————

    REM change to directory
    cd %dir%

    REM Path to WinRAR executable in Program Files
    set path=»C:\Program Files\WinRAR»;%path%

    REM Replace space in hour with zero if it’s less than 10
    SET hr=%time:~0,2%
    IF %hr% lss 10 SET hr=0%hr:~1,1%

    REM This sets the date like this: mm-dd-yr-hrminsecs1/100secs
    Set TODAY=%date:~6,4%-%date:~3,2%-%date:~0,2%

    echo.
    echo Folder to compress in *.RAR format:
    echo %dir%
    echo.
    echo.

    REM echo 1. Compress files in dir individually (no subdirs)
    REM echo 2. Compress files in dir and subdirs individually
    REM echo 3. Compress all files in dir into a single archive (no subdirs)
    REM echo 4. Compress all files in dir and subdirs into a single archive
    REM echo 5. Compress all files in dir and subdirs into a single archive – no paths
    REM echo 6. Compress all files WITHIN dir and subdirs individually – no paths
    REM echo 7. Exit
    REM echo.
    REM echo.
    REM set /P PROFILE=Enter your selection (1-7):
    REM if «%PROFILE%»==»1» goto indiv
    REM if «%PROFILE%»==»2» goto sindiv
    REM if «%PROFILE%»==»3» goto onearc
    REM if «%PROFILE%»==»4» goto sonearc
    REM if «%PROFILE%»==»5» goto snponearc
    REM if «%PROFILE%»==»6» goto wsindiv
    REM if «%PROFILE%»==»7» goto nochoice
    goto sonearc

    REM Compress files in directory individually (no subdirectories)
    :indiv
    echo.
    echo.
    FOR %%i IN (*.*) do (
    rar a «%%~ni» «%%i»
    )
    goto eof

    REM Compress files in directory and subdirectories individually
    :sindiv
    echo.
    echo.
    for /R %%b IN (*.*) do (rar a «%%~nb» «%%b» )
    )
    goto eof

    REM Compress all files in directory into a single archive (no subdirectories)
    :onearc
    echo.
    echo.
    echo Today’s date and time will be added to the base filename
    set /P name=Enter base filename for archive:
    rar a «%name%_%today%»
    goto eof

    REM Compress all files in directory and subdirectories into a single archive
    :sonearc
    echo.
    echo.
    echo Today’s date and time will be added to the base filename
    REM set /P name=Enter base filename for archive:
    rar a -r «%today%»
    IF NOT EXIST ..\RespaldoComprimido MD ..\RespaldoComprimido\
    goto copia
    IF EXIST ..\RespaldoComprimido goto copia

    :copia
    copy «%today%.rar» ..\RespaldoComprimido\
    del «%today%.rar»
    goto eof

    REM Compress all files in dir and subdirs into a single archive – no paths
    :snponearc
    echo.
    echo.
    echo Today’s date and time will be added to the base filename
    set /P name=Enter base filename for archive:
    rar a -r -ep «%name%_%today%»
    goto eof

    REM Compress all files within dir and subdirs – no paths
    :wsindiv
    echo.
    echo.
    FOR /R «%dir%» %%i IN (*.*) do (rar a -ep «%%~pi\%%~ni» «%%i»)
    goto eof

    :nochoice
    echo.
    echo.
    echo No selection made – script exited

    :eof
    pause
    endlocal

    echo.
    echo «Task Completed»
    echo.

    exit

  2. esteve dice:

    hola muy interesante el post yo cree hace poco un backup para un software el cual dicene y no me percate de hacer que el mismo hisiera software sobre su base de datos mi codigo se perdio en una formateada asi que genere un bat el cual copia cada archivo en una carpeta creada por el mismo.. hasta hay iva muy bien el problema es que cada vez que se hace backup el bat reemplaza cada archivo y casualmente tuvieronun error y por error tambien hisieron un backup con este error asi que quisiera saber como puedo generar backup distintos ordenados por fechas. la carpeta esta en el disco c:windows y se llama prestamax el backup lo genero en el disco D carpeta prestamax

    si pudieran echarme una mano muchas gracias. asi no tendria que volver a comenzar el programa de 0

  3. Gracias, sirve una maravilla

  4. Mario Roberto dice:

    Muchas gracias. Me ha servido mucho para respaldos en el servidor.

  5. Luis dice:

    En un bloc de notas copiar el siguiente codigo:
    @echo off
    title Copia de seguridad de la base de datos
    color 1E
    @echo ———————————————-
    @echo REPARACION DE ARCHIVOS USB
    @echo ———————————————-
    @echo Realizando copia de seguridad
    set fecha=%date%
    rem le quitamos las barras a la fecha
    set fecha=%fecha:/=%
    xcopy «D:\Ruta donde esta la carpeta del archivo que necesita hacer la copia de seguridad \*.*» «C:\Ruta donde quiere guardarlo\BD fecha=%date:~6,4%-%date:~3,2%-%date:~0,2%\*.*»

    le creara carpetas con la fecha del computador y dentro de esta carpeta estara el archivo que necesitaba

  6. miguel dice:

    Hola deseo saber como puedo hacer un backup de los archivos del sistema utilizando un bat y que este backup se suba a una unidad de red y mi sistema operativo es win xp pero lo que me gustaría es que yo todos los días le de ejecutar a este .bat y me envié esta información a esta unidad de red con la fecha por favor amigos necesito de su ayuda gracias

  7. >Oscar dice:

    Hola Buenas a todos, estuve leyendo como hacer un backup y la verdad me ayudaron muchos sus aportes de cada uno.
    Mi problema es que tengo un .bat que me crea el backup de una BD MyDQL hasta ahi todo muy bien me crea la carpeta denominada Backup y dentro un archivo denominado archivo_fecha_hora, hasta aca muy bien.
    Mi problema radica en como puedo generar un .bat que me levante la base de datos que yo eliga de todas las que tenga en esa carpeta, como por elemplo si tengo asi:
    archivo_24112011_20345807
    archivo_24112011_20551095
    archivo_24112011_20551346 «esta es la que deseo levantar»
    archivo_25112011_19460884
    archivo_25112011_19461132
    Si podrian guiarme como puedo realizar esa secuencia de codigos o si debo impolemntar alguan variable que sustituya a fecha hora de manera generica, nose se me esta Nublando el Dia con esto.

  8. danidrach dice:

    Oh si, el zip.exe lo bajais de: ftp://ftp.info-zip.org/pub/infozip/win32/

  9. danidrach dice:

    Por si a alguien le interesa, os dejo mi propio «bat» jeje, ultimamente me ha dado por hacer cosillas asi:
    ———————————————–
    @echo off
    ::En principio, esta pensado para iniciarlo diariamente con el programador de tareas de Windows
    ::(o el que sea), basicamente hace una copia del archivo que le indiquemos (aún no lo he probado con varios usando * en el «for»)
    ::en la carpeta que le indiquemos, y el dia 28 de cada mes, crea un .zip con todos los backups y los elimina, dejando un .zip con
    ::el mes-año.zip como nombre de archivo, muy util para backup de LOGS o archivos «simples».
    ::NOTA: Asegurate de que el zip.exe esta en la misma carpeta que este .bat.

    set año=%Date:~6,4%
    set mes=%Date:~3,2%
    set dia=%Date:~0,2%
    set fecha=%Date:~0,2%-%Date:~3,2%-%Date:~6,4%
    :::::::::CARPETA ORIGEN (con comillas)::::::::::
    set rutaorig=»C:\»
    :::::::::CARPETA DESTINO (sin comillas)::::::::::
    set carpetadest=C:\Users\Loquesea

    if %dia% EQU 28 xcopy zip.exe «%carpetadest%»
    cd %rutaorig%
    :::::::::NOMBRE ARCHIVO::::::::::
    for %%f in (tuarchivo.txt) do set archivo=%%f

    echo Haciendo copia de seguridad en…%carpetadest%
    ping -n 4 127.0.0.1 >NUL
    echo F | xcopy %archivo% «%carpetadest%\%fecha%-%archivo%» >NUL
    :::::::::DE AQUI HACIA ABAJO ARCHIVA MENSUALMENTE EN UN ARCHIVO ZIP::::::::::
    if %dia% EQU 28 cd %carpetadest%
    :::::::::EXTENSION ARCHIVO::::::::::
    if %dia% EQU 28 zip.exe %mes%-%año% *.txt
    :::::::::EXTENSION ARCHIVO (en lugar de *.txt)::::::::::
    if %dia% EQU 28 del /F *.txt

    if %dia% EQU 28 del /F zip.exe
    —————————————-

  10. Nestor dice:

    Muy bueno este aporte pero no entiendo la parte donde debo porner la ruta a donde quiero que se pegue el backup.

    Deberemos reemplazar “Actual” por el nombre de la carpeta que contiene nuestros archivos de origen e indicar el lugar donde se creará la nueva carpeta en mi caso es una carpeta con el nombre Backup

    ejemplo esta es la ruta que deseo en que se pegue mi backup

    C:\Documents and Settings\Administrador\Escritorio\1

  11. HarryMetal dice:

    este codigo es para que el bat comprima en un rar el respaldo y lo copie a tu USB, claro tendrias que tener el Winrar instalado para que sirva

    @Echo off
    «C:\Program Files\WinRAR\Winrar.exe» a -r -dh -rr -agDD-MMM-YYYY-HHMMSS f:\Respaldodatosaspel c:\archivosdeprograma\aspel\saewin\datos

    espero te sirva ^_^

  12. Edilberto Garcia Garcia dice:

    tengo una carpeta c:\archivosdeprograma\aspel\saewin\datos
    quiero respaldar esta carpeta de datos en una memoria USB, pero que cree carpetas y que nombre de las carpeta sea la fecha actual

    mi correo es garciaperforman@hotmail.com

    gracias por su ayuda

  13. marcelo dice:

    funciona de primera, muy bueno tu aporte segui así

  14. Noe dice:

    Necesito ayuda de un experto, Puedo tener un bat que me permita quitarme este trabajo: todos los dias copio manualmente de una carpeta con nombre de fecha del dia anterior ubicada en un servidor compartido todos los archivos y lo copio en mi PC en una carpeta con la fecha del dia en que hago la copia…

  15. Roberto Arcos Enriquez dice:

    Gracias amigo funciona correctamente unicamente tuve que quitarle un punto (.) que estaba de mas..Gracias ya lo modifique y quedo muy bien…Gracias nuevamente

  16. armando dice:

    mil gracias viejo me sirvio mucho.

  17. Pablo dice:

    Gacias por el dato me sirvio la misma formula para nombrar archivos con la fecha actual

  18. rogelio dice:

    hola , tengo una duda ya cree el bat con las carpetas que quiero copiar mi problemas es que copia las carpetas en el mismo lugar donde estan las originales ¿como prodria hacer que las carpetas que estoy copiando las mande a un disco duro externo o una memoria usb? de antemano les anticipo las gracias

  19. Carlos dice:

    Estimado,
    Necesito saber como modificar el bat que que realize el backup todos los dias tomando la fecha del dia y no que sobrescriba el mismo.
    Gracias.
    slds.

    @ECHO OFF
    @ECHO RESPALDO DE ARCHIVOS
    xcopy c:\MutualPeRedCaja\mutual.mdb f:\backups\MutualPeRedCaja /f/Y
    xcopy c:\MutualPeVen\mutual.mdb f:\backups\MutualPeVen /f/Y
    xcopy c:\MutualDoRed\mutual.mdb f:\backups\MutualDoRed /f/Y
    xcopy c:\cad\eje2010enered\conta.mdb f:\backups\CadEjeEne2010enered /f/Y
    xcopy c:\cad\eje2010eneredfar\conta.mdb f:\backups\CadEjeEneRedFar /f/Y
    echo Backup Completo!!!
    Pause

  20. Jaime Naranjo dice:

    Problema lo hize al pie de la letra eso espero pero me manda que el directorio ya existe … me pueden ayudar mi correo es jnaranjo@rimith.com
    o j_naranjo_c_@hotmail.com

  21. jesus hdz dice:

    Excelente. Me sirvio de mucho. Gracias

  22. Luiggi dice:

    Necesito saber que fecha tiene un archivo y compararlo con la fecha de otro archivo, y si son iguales las fecha no lo remplazo , y si la fecha es menor a la del archivo a comparar lo actualizo

  23. ivan dice:

    Oie amigo buen dia fiate que si me creaa la carpeta el bat pero sin ningun dato

    Tiienes idea de que estoy haciendo mal..

  24. Javier dice:

    Carlos que es lo que no te funciona el crear la carpeta o el obtener la fecha? Si el problema es el obtener la fecha
    SET FOLDER=%date:~6,4%-%date:~3,2%-%date:~0,2%
    puede ser la configuracion regional que tiene el sistema, hice pruebas cambiando la configuracion regional (español, ingles y frances) y en cada uno me daba valores distinto.
    Alguien sabe como obtener la fecha correctamente independientemente de la configuracion regional???

  25. Carlos dice:

    TU bach es bueno pero no funciona para server 2003 stardar ya hice las pruebas si sabes algun dato te lo agradeceria

    Chau

  26. refari dice:

    Buen dato socio…………….thank you