[BATCH]Copiar carpetas en batch :D

Iniciado por FranciskoAsdf, 21 Octubre 2008, 01:52 AM

0 Miembros y 1 Visitante están viendo este tema.

FranciskoAsdf

Hola!  Saludos y espero que me puedan ayudar en mi problema
Lo que pasa es que estoy haciendo un pequeño programa  con batch para hacer respaldos de carpetas automáticamente, donde el usuario (si es la primera vez que lo usa ) ingresa la ruta de la carpeta que quiere respaldar, la ruta de la carpeta donde quiere  guardar el respaldo y el nombre con que se renombrara la carpeta respaldada, esto es solo una vez y la próxima vez que  el programa carga las rutas automáticamente, se muestra un menú principal con varias opciones...  y una de ellas obviamente es comenzar el respaldo.(el código no lo tengo ahora porke no estoy en mi casa, pero apenas pueda lo posteo para todos lo puedan usar ;D!) ya voy bastante avanzado, de hecho ahora solo estoy en la parte de añadir "efectos" al programa y es en uno de esos efectos que me he quedado pegado... cuando el usuario da a la opción respaldar  el programa muestra una pantalla que dice algo como "Respaldando archivos por favor espere" (con enmarcado y eso xD)... en esta parte uso el comando xcopy de esta manera
Xcopy %rutaentrada% %rutasalida%/CARPETATEMP  /S >%temp%/respaldo.txt
Donde la variable %rutaentrada% contendria la ruta de la carpeta a respaldar, %rutasalida% que contendria la ruta donde copiar el respaldo
Y en el archivo respaldo.txt va guardando los archivos que se copian:
Por ejemplo
C:/juegoxd/system.dll
Por dar el ejemplo de un archivo, obviamente son muchos mas...
Esto lo hago para que no se vean las rutas completas, por que a mi gusto no se ve bien xD o es molesto xD
Ahora lo que quiero hacer yo es que en vez de mostrar
"Copiando C:/juegoxd/system.dll"
Muestre algo como
Respaldando Archivo : System.dll
Que muestre solo el archivo y no la ruta completa y el archivo que se esta copiando, Y que cada vez que copie otro archivo diga lo mismo ó sea seria como:
Respaldando Archivo : System.dll
Respaldando Archivo : Alaaudio.dll

Pero no se como hacerlo, había pensado en usar un for pero no entiendo mucho el FOR xD!
Es por esa razón que posteo para saber si alguno de uds me puede ayudar o dar una idea de cómo se puede hacer....
Espero haberme explicado bien y gracias de ante mano.-
PD: el codigo lo voy a postear apenas pueda y en este mismo hilo :D! porque no tengo internet e mi casa u.u xD! (lo digo por el tiempo en que me pueda demorar en responder.)

Saludos y gracias de ante mano por al ayuda


Como lo prometido es deuda eh aca el code del miniprograma
@echo off
IF EXIST %temp%\creditos.bat (DEL %temp%\creditos.bat)
:Primera
echo echo. >>%temp%\creditos.bat
echo echo                 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ» >>%temp%\creditos.bat
echo echo                 º                                            º >>%temp%\creditos.bat
echo echo                 º        Respaldar Carpetas v5.5             º >>%temp%\creditos.bat
echo echo                 º                    by                      º >>%temp%\creditos.bat
echo echo                 º                 Francisko!                 º >>%temp%\creditos.bat
echo echo                 º                                            º >>%temp%\creditos.bat
echo echo                 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ >>%temp%\creditos.bat
echo echo. >>%temp%\creditos.bat
echo echo. >>%temp%\creditos.bat

TITLE Cargando....
SET weno=ping -n 2 0.0.0.0
SET fecha=%date%
SET fechados=%date:/=-%
CLS
COLOR A
CALL:LOADER
echo Comprobando Archivo de Rutas...
%weno% >nul
IF NOT EXIST %temp%\rutascarptemp.txt (echo EL ARCHIVO NO EXISTE &pause&GOTO:CrearRutas) ELSE (echo Archivo OK)
%weno% >nul
:OTRAXD
IF NOT EXIST %temp%\respuesta.txt (CALL:MENUPRIN) ELSE (GOTO:MAAAAS)
:MAAAAS
ren %temp%\respuesta.txt *.bat
call %temp%\respuesta.bat
ren %temp%\respuesta.bat *.txt
IF %masvar%=="1" (GOTO:SEGUIR) ELSE (GOTO:MENUPRIN)
:principal
CLS
title Respaldar Carpetas v5.5 - Menu Principal Bienvenido: *-=+[%USERNAME%]+=-*
COLOR A
:MENUPRIN
title Respaldar Carpetas v5.5 - Menu Principal Bienvenido: *-=+[%USERNAME%]+=-*
COLOR A
CLS
call %temp%\creditos.bat
TITLE Menu Principal

echo [1].- Respaldar.
echo [2].- Cambiar Rutas.
echo [3].- Ver la Ayuda.
echo [4].- Ver Archivo de Rutas.
echo [5].- Automatizar el copiado.
echo.
echo NOTA : Ten en cuenta que se pueden generar dos carpetas, una con el nuevo
echo respaldo y una con el antiguo, asi que no respaldes carpetas o archivos demasiado grandes.
echo.
SET respuest=
SET /P respuest="Opcion: "
IF "%respuest%"=="" call :NADA
IF "%respuest%"=="1" call :CargarRutas
IF "%respuest%"=="2" call :CambiarRutas
IF "%respuest%"=="3" call:Ayuda
IF "%respuest%"=="4" call :VEAME
IF "%respuest%"=="5" (GOTO:PREGU) ELSE (GOTO principal)

IF EXIST %temp%\rutascarptemp.txt (GOTO CargarRutas) ELSE (GOTO CrearRutas)
:CrearRutas
COLOR A
CLS
call %temp%\creditos.bat
echo.
echo El Archivo donde se guardaran las Rutas de Respaldo no Existe,
echo O ah sido borrado...
echo.
echo Asi que debemos crear uno ^^^^
echo.
echo NO uses comillas para escribir los datos o el programa dara error
echo.
SET /P rutaentrada="Pega o Escribe la ruta de la carpeta que quieres respaldar: "
IF "%rutaentrada%"=="" GOTO error1
SET /P rutasalida="Pega o Escribe la ruta donde se guardara el respaldo: "
IF "%rutasalida%"=="" GOTO error1
IF "%rutaentrada%"=="%rutasalida%" GOTO FATALERROR
SET /P nomcarpsalida="Escribe el nombre que se le dara a la carpeta de respaldo: "
IF "%nomcarpsalida%"=="" GOTO error1
SET nomcarpsalida=%nomcarpsalida: =_%
echo.
echo @set rutaentrada="%rutaentrada%">> %temp%\rutascarptemp.txt
echo @set rutasalida="%rutasalida%">> %temp%\rutascarptemp.txt
echo @set nomcarpsalida="%nomcarpsalida%">> %temp%\rutascarptemp.txt
GOTO Principal
:SEGUIR
:CargarRutas
COLOR A
TITLE Cargando Rutas...
CLS
IF NOT EXIST %temp%\rutascarptemp.txt (GOTO CrearRutas)
cls
call %temp%\creditos.bat
echo Cargando Rutas porfavor espera...
echo.
%weno% >nul
cls
call %temp%\creditos.bat
echo Cargando Rutas porfavor espera...
echo.
echo °°°°°°°°°°°°
REN %temp%\rutascarptemp.txt *.bat
%weno% >nul
cls
call %temp%\creditos.bat
echo Cargando Rutas porfavor espera...
echo.
echo °°°°°°°°°°°°°°°°°°°°
call %temp%\rutascarptemp.bat
%weno% >nul
cls
call %temp%\creditos.bat
echo Cargando Rutas porfavor espera...
echo.
echo °°°°°°°°°°°°°°°°°°°°°°°°°°°° Listo!
ren %temp%\rutascarptemp.bat *.txt
%weno% >nul
IF NOT EXIST %rutaentrada% (GOTO NOEXISTE)
call:Respaldar

:Respaldar
TITLE Respaldando ...
cls
IF NOT EXIST %rutasalida% MD %RUTASALIDA%
CD /D%rutasalida%
IF Exist CARPETATEMP_OLD (RD /S /Q CARPETATEMP_OLD)
IF EXIST CARPETATEMP (REN CARPETATEMP CARPETATEMP_OLD)

MD CARPETATEMP

echo.
echo.
echo                 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo                 º                                            º
echo                 º             Copiando Archivos              º
echo                 º             Porfavor Espera..              º
echo                 º                                            º
echo                 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.

xcopy %rutaentrada% %rutasalida%\CARPETATEMP /E > %temp%\respaldo.txt
GOTO:GETTOGETHER
:GETTOGETHER
TITLE LISTO!!! ^^^^
DEL %temp%\respaldo.txt
CD /D%rutasalida%
%weno% >nul
IF EXIST %nomcarpsalida% (ren %nomcarpsalida% %nomcarpsalida%_OLD)
IF EXIST %nomcarpsalida%_OLD (RD /S /Q %nomcarpsalida%_OLD)
%weno% >nul
echo Renombrando a %nomcarpsalida%...
%weno% >nul
ren CARPETATEMP %nomcarpsalida%
IF %ERRORLEVEL%==0 (GOTO:LISTOKO) ELSE (echo Ocurrio un fallo al renombrar la carpeta&pause&exit)
echo.
REM SET /P question="Deseas Renombrar tu carpeta %nomcarpsalida% a %nomcarpsalida%_%fechados%? [S/N]: "
REM IF "%question%"=="" (ECHO No has escrito nada, no se renombrara la carpeta a la fecha actual&GOTO:LISTOKO)
REM IF "%question%"=="S" GOTO SEDOS
REM IF "%question%"=="s" GOTO SEDOS
REM IF "%question%"=="N" GOTO NODOS
REM IF "%question%"=="n" GOTO NODOS

REM :SEDOS
REM IF EXIST %nomcarpsalida%_%fechados% (RD /S /Q %nomcarpsalida%_%fechados%)
REM ren %nomcarpsalida% %nomcarpsalida%_%fechados%
REM IF %ERRORLEVEL%==0 (GOTO:LISTOKO) ELSE (echo ocurrio un fallo al renombrar la carpeta&pause&exit)
REM GOTO:LISTOKO
REM :NODOS
REM GOTO:LISTOKO
:LISTOKO
ECHO Carpeta Respaldada Con Exito ^^^^, presiona un tecla para salir...
IF EXIST %temp%\creditos.bat (DEL %temp%\creditos.bat)
pause>nul
exit


:error1
echo msgbox "No has escrito nada %USERNAME%", 64, "Mensaje de Error"> %temp%\nada.vbs
start %temp%\nada.vbs
%weno% >nul
del %temp%\nada.vbs >nul
cls
CALL:CrearRutas

:CambiarRutas
echo.
ECHO Ahora borraras el archivo donde se guardan las rutas de copiado...
echo Presiona un tecla para continuar, si no quieres hacerlo cierra el programa...
pause >nul
DEL %temp%\rutascarptemp.txt
GOTO CrearRutas

:Ayuda
cls
mode con cols=85
mode con lines=38
TITLE AYUDA xD!
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍ»
echo º Opcion 1:º
echo ºÍÍÍÍÍÍÍÍÍÍÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Empieza el proceso de respaldo de tu carpeta, siempre y cuando                  º
echo º hayas creado el archivo con las rutas de respaldo, si no has creado el archivo  º
echo º con las rutas de respaldo el programa te pedira crearlo automaticamente.        º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍ»
echo º Opcion 2:º
echo ºÍÍÍÍÍÍÍÍÍÍÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Borras el archivo donde se guardan las rutas de copiado y          º
echo º Pasas crear el archivo de nuevo, con las nuevas rutas de respaldo. º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍ»
echo º Opcion 3:º
echo ºÍÍÍÍÍÍÍÍÍÍÈÍÍÍÍÍÍÍÍÍÍÍ»
echo º Ves la ayuda xD! :B! º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍ»
echo º Opcion 4:º
echo ºÍÍÍÍÍÍÍÍÍÍÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º El programa te muestra un archivo con las rutas que has configurado previamente.  º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo ÉÍÍÍÍÍÍÍÍÍÍ»
echo º Opcion 5:º
echo ºÍÍÍÍÍÍÍÍÍÍÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo º Con esta opcion haces que el programa automaticamente comienzea a respaldar   º
echo º tu carpeta cada vez que lo ejecutes. (Ya no podras acceder el menu principal) º
echo ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
echo Presiona una tecla para volver al menu principal...
pause>nul
cls
GOTO principal

:FATALERROR
cls
CALL %temp%\creditos.bat
echo.
ECHO %USERNAME%: LA RUTA DE ENTRADA CON LA RUTA DE DESTINO SON LAS MISMAS!!!!
ECHO %USERNAME%: DEBES CAMBIAR UNA DE LAS RUTAS...
echo.
echo Presiona una tecla para volver a empezar!
pause>nul
cls
IF EXIST %temp%\rutascarptemp.txt (DEL %temp%\rutascarptemp.txt)
GOTO CrearRutas

:NADA
echo msgbox "No has escrito nada %USERNAME%", 64, "Mensaje de Error"> %temp%\nada.vbs
start %temp%\nada.vbs
%weno% >nul
del %temp%\nada.vbs >nul
cls
call:principal

:ERRONEO
echo msgbox "%USERNAME% La opcion que has escrito no es valida", 64, "Informacion" > %temp%\erroneo.vbs
start %temp%\erroneo.vbs
%weno% >nul
del %temp%\erroneo.vbs
CLS
CALL:principal

:NOEXISTE
echo.
echo Un error ha ocurrido %USERNAME%:
echo La Carpeta de entrada ya no existe... o ha sido renombrada.....
echo.
SET opcnoe=x
SET /P opcnoe="Deseas Borrar El Archivo de Rutas? [S/N]: "
IF "%opcnoe%"=="" GOTO NADADOS
IF "%opcnoe%"=="S" GOTO SE
IF "%opcnoe%"=="s" GOTO SE
IF "%opcnoe%"=="N" GOTO NO
IF "%opcnoe%"=="n" GOTO NO

:NADADOS
echo msgbox "No has escrito nada %USERNAME%", 64, "Mensaje de Error"> %temp%\nada.vbs
start %temp%\nada.vbs
%weno% >nul
del %temp%\nada.vbs >nul
cls
GOTO NOEXISTE

:SE
ECHO %USERNAME% El Archivo antiguo sera borrado y pasaras a crear uno nuevo
echo con las nuevas rutas de respaldo....
echo.
echo Presiona una tecla para continuar....
pause >nul
CALL:CambiarRutas

:NO
CLs
GOTO principal

:VEAME
IF EXIST %temp%\rutascarptemp.bat (DEL %temp%\rutascarptemp.bat)
IF EXIST %temp%\Archivo_de_Rutas.txt (DEL %temp%\Archivo_de_Rutas.txt)
REN %temp%\rutascarptemp.txt *.bat
CALL %temp%\rutascarptemp.bat
REN %temp%\rutascarptemp.bat *.txt
echo Espere mientras se genera el archivo
%weno% > nul
%weno% > nul
echo Estas son las rutas de Respaldo que has configurado... > %temp%\Archivo_de_Rutas.txt
echo -------------------------------------------------------- >> %temp%\Archivo_de_Rutas.txt
echo. >>%temp%\Archivo_de_Rutas.txt
echo Carpeta a Respaldar = %rutaentrada% >> %temp%\Archivo_de_Rutas.txt
echo. >> %temp%\Archivo_de_Rutas.txt
echo ________________________________________________________ >> %temp%\Archivo_de_Rutas.txt
echo. >> %temp%\Archivo_de_Rutas.txt
echo Carpeta donde se guardara el respaldo = %rutasalida% >> %temp%\Archivo_de_Rutas.txt
echo. >> %temp%\Archivo_de_Rutas.txt
echo ________________________________________________________ >> %temp%\Archivo_de_Rutas.txt
echo. >> %temp%\Archivo_de_Rutas.txt
echo Nombre con que sera nombrada la carpeta de Respaldo = %nomcarpsalida% >> %temp%\Archivo_de_Rutas.txt
echo. >> %temp%\Archivo_de_Rutas.txt
echo ________________________________________________________ >> %temp%\Archivo_de_Rutas.txt
echo. >> %temp%\Archivo_de_Rutas.txt
echo Respaldar Carpetas by Francisko.O! >> %temp%\Archivo_de_Rutas.txt

start %temp%\Archivo_de_Rutas.txt
echo Archivo Generado con Exito... Presiona un tecla para volver al menu principal...
pause > nul
DEL %temp%\Archivo_de_Rutas.txt >nul
GOTO Principal


:LOADER
echo.
echo                 ÉÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍ»
echo                 º                                            º
echo                 º                                            º
echo                 º                                            º
echo                 º                  CARGANDO                  º
echo                 º                                            º
echo                 º                                            º
echo                 º                                            º
echo                 ÈÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍÍͼ
echo.
GOTO:eof

:ESPERA
ping -n 2 0.0.0.0 >nul
GOTO:eof

:PREGU
CLS
COLOR A
TITLe Automatizar
echo.
echo Con esta opcion el programa comenzara a respaldar tu carpeta
echo autmaticamente cada vez que lo ejecutes.
echo.
echo Ten en cuenta que si eliges si, no podras cambiar las rutas de copiado.
echo En caso de que quieras hacerlo, Debes hacer lo siguiente:
echo Debes ir a "INICIO" -^> "Ejecutar"
echo y escribir "%%temp%%" (sin las comillas) y borrar el archivo respuesta.txt.
echo.
echo Si eliges NO el programa mostrara un menu principal cada vez que lo ejecutes.
echo.
SET /P var="[S/N]: "
IF "%var%"=="S" (GOTO SERES)
IF "%var%"=="s" (GOTO SERES)
IF "%var%"=="N" (GOTO NORES)
IF "%var%"=="n" (GOTO NORES)
:SERES
echo @SET masvar="1">%temp%\respuesta.txt
GOTO:SEGUIR
:NORES
echo @SET masvar="2">%temp%\respuesta.txt
GOTO:MENUPRIN


Saludos :D!
Asdf debería ser algún tipo de función.