Ms-Dos - Ayuda con Bat para copiar y hacer backups de archivos

 
Vista:
sin imagen de perfil

Ayuda con Bat para copiar y hacer backups de archivos

Publicado por Sergio (2 intervenciones) el 28/04/2017 23:16:28
Hola a todos,

Después de intentarlo tanto y no encontrar el por qué no me funciona este código, decidí consultar porque realmente no sé cuál es el problema o si alguno me pueda hacer una sugerencia.
Estoy intentando realizar una copia y un backup automático de uno o más archivos según un archivo de texto llamado Paso.txt. Me explico:

Un usuario deja en una ruta un archivo llamado Paso.txt con esta estructura:
pagina.txt
Ruta1
Ruta2

La primera línea indica el archivo que se va a copiar (en este caso pagina.txt), en la segunda línea indica la ruta origen donde se encuentra el archivo y en la tercera línea la ruta hacia la cual se debe copiar el archivo y así sucesivamente, es decir puede indicar n rutas y n archivos pero siempre conservando la estructura:

pagina.txt
Ruta1
Ruta2
pagina2.txt
Ruta3
Ruta4

Lo que estoy haciendo es leer el archivo y almaceno cada línea en una variable, (lo estoy mostrando en pantalla y lo veo bien), luego creo en la ruta destino una carpeta llamada Backup, hago un respaldo del archivo que voy a copiar en dicha carpeta y luego copio el archivo del origen al destino. El problema es que cuando se me incrementan las variables que estoy utilizando (a, o y d ) no me realiza la copia en el siguiente ciclo y no sé porque, es decir solo me funciona la primera vez. Alguien me podría indicar que estoy haciendo mal?

Nota: Las variables a, o y d si se están incrementando porque las imprimo en pantalla y crecen pero no me permiten ir avanzando entre líneas como deberían.
Acá les dejo el código:

SET /P RutaG= Ingrese la ruta del archivo de pasos:
setlocal enabledelayedexpansion
SETLOCAL ENABLEEXTENSIONS
set c=0
for /f "tokens=*" %%a in (%RutaG%\Paso.txt) do (
set /a c+=1
call set Var!c!=%%a
)
echo El archivo ha sido leido correctamente
pause
for /l %%n in (1,1,!c!) do (echo !Var%%n!)
pause
set /a ciclo=%c% / 3
set a=1
set o=2
set d=3
setlocal enabledelayedexpansion
for /L %%k in (1,1,%ciclo%) do (
echo %%k,!a!,!o!,!d!
mkdir !Var%d%!\Backup
copy !Var%d%!\!Var%a%! !Var%d%!\Backup
pause
copy !Var%o%!\!Var%a%! !Var%d%!
set /a a+=3
set /a o+=3
set /a d+=3
echo %%k,!a!,!o!,!d!
pause
)
endlocal
pause
exit
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Ayuda con Bat para copiar y hacer backups de archivos

Publicado por Antoni Masana (811 intervenciones) el 02/05/2017 11:12:00
Prueba este código:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
@echo off
cls
SET RutaG=Ingrese la ruta del archivo de pasos :
 
SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEEXTENSIONS
 
set c=0
for /f "tokens=*" %%a in (%RutaG%\Paso.txt) do Call :Leer %%a
 
echo El archivo ha sido leido correctamente
pause
 
for /l %%n in (1,1,!c!) do echo !Var[%%n]!
goto:EOF
 
:Leer
   set /a c+=1
   set Var[%c%]=%1
   goto:EOF

Si te gusta sigue con el siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
@echo off
cls
SET RutaG=Ingrese la ruta del archivo de pasos :
 
SETLOCAL ENABLEDELAYEDEXPANSION
SETLOCAL ENABLEEXTENSIONS
 
set c=0
for /f "tokens=*" %%a in (%RutaG%\Paso.txt) do Call :Leer %%a
 
echo El archivo ha sido leido correctamente
pause
 
for /l %%n in (1,3,!c!) do call :Copiar %%n
goto:EOF
 
:Leer
   set /a c+=1
   set Var[%c%]=%1
   goto:EOF
 
:Copiar
   set    File=%1
   set /a Orig=%1+1
   set /a Dest=%1+2
 
   echo copy !Var[%Orig%]!\!Var[%File%]! !Var[%Dest%]!
   goto:EOF

solo muestra la línea de copia por pantalla. Este es el resultado de mi prueba.

1
2
3
4
El archivo ha sido leido correctamente
Presione una tecla para continuar . . .
copy Ruta1\pagina.txt Ruta2
copy Ruta3\pagina2.txt Ruta4


Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Ayuda con Bat para copiar y hacer backups de archivos

Publicado por Sergio (2 intervenciones) el 02/05/2017 15:57:47
Antoni Masana mil gracias. Le adicione algunas cositas y funciona perfecto
un abrazo!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Bat para copiar y hacer backups de archivos

Publicado por Jose Bonifas (4 intervenciones) el 13/06/2017 17:02:16
Hola, yo estoy intentando copiar archivos desde un ftp a una carpeta del PC, pero me da el error: "Ya existe un archivo con el mismo nombre o no se ha encontrado el archivo."

El código que utilizo es:

move "ftp://ftp.dominio/carpeta/*.*" "C:\Desktop\Archivos\"

por otra parte, donde pongo el user y password del FTP??

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Antoni Masana
Val: 1.419
Oro
Ha mantenido su posición en Ms-Dos (en relación al último mes)
Gráfica de Ms-Dos

Ayuda con Bat para copiar y hacer backups de archivos

Publicado por Antoni Masana (811 intervenciones) el 13/06/2017 19:02:40
Por favor añade este post como una entrada nueva.
Estas en una entrada de abril y mucha gente no la vera y no te podrán ayudar.
Cando lo hagas hablamos del tema.

Saludos.
\\//_
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Ayuda con Bat para copiar y hacer backups de archivos

Publicado por Jose Bonifas (4 intervenciones) el 14/06/2017 18:35:13
Gracias, ya lo he creado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar