Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: m4st3rcr4zy en 29 Diciembre 2011, 18:49 pm



Título: Bat copiar archivo en red.
Publicado por: m4st3rcr4zy en 29 Diciembre 2011, 18:49 pm
Hola de nuevo. ;D

Despues de años de no entrar aqui regreso pidiendo ayuda.

Mi situacion en la siguiente:

Necesito copiar un archivo de imagen en red (8 GB) es una imagen de norton ghost. El lugar donde esta fisicamente es "lejisimos" por lo que se descarta la solucion de ve por el archivo lo copias en un medio extraible y tan tan solucionado. Estoy intentando copiar el archivo con el xcopy y el copy en windows XP  con el parametro /Z el caso es que mi red tiene un pequeño fallo y se pierde la conexion cada x tiempo cosa que no demora mucho es cuestion de perdidas de milisegundos y necesito dejar copiando ese archivo saliendo del trabajo por lo que si alguien me puede orientar sobre como crear un batch que de alguna manera cache el mensaje de "El nombre de red especificado ya no esta disponible" y vuelva a aplicar el comando
copy "\\x.x.x.x\imagen.gho" . /Z

o el

 xcopy /C /Z "\\x.x.x.x\imagen.gho"

Agradeceria su apoyo colegas.

Saludos


Título: Re: Bat copiar archivo en red.
Publicado por: Eleкtro en 29 Diciembre 2011, 22:30 pm
Hola.

Xcopy se usa para directorios, así que usaremos COPY.

Yo nunca he copiado un archivo en red, así que hay cosas que desconozco, como si el comando "Copy" da un "ERRORLEVEL 1" si la conexion falla, o si al fallar la conexion sale el mensaje ese de "El nombre de red especificado ya no esta disponible" en consola...

Así que te hago dos scripts
El primero se basa en la frase que mencionas (No puedo comprobar la eficacia del script porque no tengo una red).
El segundo script compara el tamaño del archivo de origen con el de destino, Este te va a funcionar seguro (Al menos eso creo), si el primero no lo hace.



Código
  1. @echo off
  2.  
  3. REM Visita Foro.ElHacker.Net
  4.  
  5. Set "ORG=Imagen.gho"
  6. Set "DEST=\\x.x.x.x\Imagen.gho"
  7.  
  8.  
  9. :::::
  10. copy /Y /Z "%ORG%" "%DEST%" | Find /i "disponible" >nul
  11. If %ERRORLEVEL% EQU 0 (Goto :Copy)
  12.  
  13.  
  14. :END
  15. ::::
  16. Cls
  17. Echo. Archivo: "%ORG%"
  18. Echo. Copiado correctamente.




Código
  1. @echo off
  2.  
  3. REM By EleKtro H@cker
  4. REM Visita Foro.ElHacker.Net
  5.  
  6. Set "ORG=%CD%\Imagen.gho"
  7. Set "DEST=\\x.x.x.x\Imagen.gho"
  8.  
  9.  
  10. :::::
  11. copy /Y /Z "%ORG%" "%DEST%" >nul
  12. Set Size_DEST=
  13. Call :Size %ORG%
  14. Call :Size %DEST%
  15.  
  16.  
  17. :Size
  18. :::::
  19. If Defined Size_ORG (
  20. Set Size_DEST=%~z1
  21. Goto :Compare
  22. ) ELSE (
  23. Set Size_ORG=%~z1
  24. Goto :EOF
  25. )
  26.  
  27.  
  28. :Compare
  29. ::::::::
  30. IF "%SIZE_ORG%" EQU "%SIZE_DEST%" (Goto :END) else (GOTO :COPY)
  31.  
  32.  
  33. :END
  34. ::::
  35. Cls
  36. Echo. Archivo: "%ORG%"
  37. Echo. Copiado correctamente.



Título: Re: Bat copiar archivo en red.
Publicado por: m4st3rcr4zy en 30 Diciembre 2011, 00:09 am
Gracias colega.

Probare el segundo metodo que es el que mejor cara pinta.

Aunque he hecho algo rustico como programar una tarea que se ejecute cada minuto donde ejecuta el bat en cuestion.

Saludos