
variable dentro de otra variable
Publicado por ABRIGO (4 intervenciones) el 14/11/2015 00:13:27
hola a tod@s
Estoy haciendo un bat, en ms-dos, para realizar una copia de seguridad con robocopy. Y con ello estoy aprendiendo. Mi duda es la siguiente:
En el disco T, tengo las siguientes carpetas
00 NOVEDADES
02 PELICULAS
33 JUEGOS INFANTILES
ahora quiero copiar carpeta por carpeta con un bucle al disco W.
Esto es, cuando n=1 , entonces me copias la carpeta 1 a disco W
cuando n=2 me copias la carpeta 2 al disco W así, hasta 33.
Como novato, he realizado el programa a lo bruto y sale, es decir un bat con 33 robocopy y listo. (También se que hay muchos programas que lo hacen). Pero ahora quiero aprender mas cosas y lo quería hacer con un solo robocopy
Lo que llevo hecho es lo siguiente
@ECHO OFF
: COPIA DISCO D:\ a DISCO W:\
SET CARPETA0=00 NOVEDADES
SET CARPETA1=01 CENTRAL
SET CARPETA2=02 PELICULAS
SET CARPETA33=33 JUEGOS INFANTILES
SET N=-1
:BUCLE
SET /A N=%N%+1
ECHO CARPETA%N%
pause
EL PROBLEMA VIENE AQUI. CUANDO N=0 EL ECHO CARPETA%N%, ME DE UN RESULTADO DE CARPETA0
PERO SI HAGO ESTO:
ECHO %CARPETA%N%%
NO ME DA EL VALOR QUE TIENE LA CARPETA%n% , O SEA "00 NOVEDADES", haciendo cambios me da N% o carpeta 0, pero nunca carpeta 00 novedades.
Y POR TANTO ROBOCOPY NO SABE QUE QUIERO COPIAR LA CARPETA "00 NOVEDADES"
.
:ROBOCOPY
echo %CARPETA0%
echo %CARPETA%N%%
PAUSE
ROBOCOPY "D:\%CARPETA%N%%" "W:\%CARPETA%N%%"
Debería hacer "D:\00 novedades" " W:\00 novedades"
echo error %errorlevel%
pause
if errorlevel 16 echo error %errorlevel% ***ERROR FATAL*** & goto :eofi
if errorlevel 8 echo error %errorlevel% **COPIAS FALLIDAS** & goto :eofi
if errorlevel 4 echo error %errorlevel% *DISCREPANCIAS* & goto :eofi
if errorlevel 2 echo error %errorlevel% FICHEROS EXTRA & goto :eofi
if errorlevel 1 echo error %errorlevel% Copia correcta & goto :eofi
if errorlevel 0 echo error %errorlevel% sin cambios & color 71 & goto eofi
:eofi
PAUSE
GOTO BUCLE
GRACIAS DE ANTE MANO Y PERDONEN LA INEXPERIENCIA.
Estoy haciendo un bat, en ms-dos, para realizar una copia de seguridad con robocopy. Y con ello estoy aprendiendo. Mi duda es la siguiente:
En el disco T, tengo las siguientes carpetas
00 NOVEDADES
02 PELICULAS
33 JUEGOS INFANTILES
ahora quiero copiar carpeta por carpeta con un bucle al disco W.
Esto es, cuando n=1 , entonces me copias la carpeta 1 a disco W
cuando n=2 me copias la carpeta 2 al disco W así, hasta 33.
Como novato, he realizado el programa a lo bruto y sale, es decir un bat con 33 robocopy y listo. (También se que hay muchos programas que lo hacen). Pero ahora quiero aprender mas cosas y lo quería hacer con un solo robocopy
Lo que llevo hecho es lo siguiente
@ECHO OFF
: COPIA DISCO D:\ a DISCO W:\
SET CARPETA0=00 NOVEDADES
SET CARPETA1=01 CENTRAL
SET CARPETA2=02 PELICULAS
SET CARPETA33=33 JUEGOS INFANTILES
SET N=-1
:BUCLE
SET /A N=%N%+1
ECHO CARPETA%N%
pause
EL PROBLEMA VIENE AQUI. CUANDO N=0 EL ECHO CARPETA%N%, ME DE UN RESULTADO DE CARPETA0
PERO SI HAGO ESTO:
ECHO %CARPETA%N%%
NO ME DA EL VALOR QUE TIENE LA CARPETA%n% , O SEA "00 NOVEDADES", haciendo cambios me da N% o carpeta 0, pero nunca carpeta 00 novedades.
Y POR TANTO ROBOCOPY NO SABE QUE QUIERO COPIAR LA CARPETA "00 NOVEDADES"
.
:ROBOCOPY
echo %CARPETA0%
echo %CARPETA%N%%
PAUSE
ROBOCOPY "D:\%CARPETA%N%%" "W:\%CARPETA%N%%"
Debería hacer "D:\00 novedades" " W:\00 novedades"
echo error %errorlevel%
pause
if errorlevel 16 echo error %errorlevel% ***ERROR FATAL*** & goto :eofi
if errorlevel 8 echo error %errorlevel% **COPIAS FALLIDAS** & goto :eofi
if errorlevel 4 echo error %errorlevel% *DISCREPANCIAS* & goto :eofi
if errorlevel 2 echo error %errorlevel% FICHEROS EXTRA & goto :eofi
if errorlevel 1 echo error %errorlevel% Copia correcta & goto :eofi
if errorlevel 0 echo error %errorlevel% sin cambios & color 71 & goto eofi
:eofi
PAUSE
GOTO BUCLE
GRACIAS DE ANTE MANO Y PERDONEN LA INEXPERIENCIA.
Valora esta pregunta


0