Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Shadow en 3 Mayo 2011, 11:15 am



Título: Batch y Drive Snapshot Como podria capturar un codigo de error?
Publicado por: Shadow en 3 Mayo 2011, 11:15 am
Hola Gente del Batch!

Tengo un codigo que funciona, pero llegado el caso de que surja un error, no sabria como interceptarlo y ponerlo en el informe final, es decir en caso de un "x" error hacer como un GOTO e informarlo ya que cada vez que surje un error de todas en el resporte me dice que todo esta OK y que el BackUp se realizo correctamente.

como podria usar instrucciones IF-Then entre medio de cada backup... alguna idea aunque sea volada?


Muchas Gracias!






CODIGO:


rem Formatea, Nombre= Fecha

format V: /Q /X /V:%date% /y

rem Crear directorio de C y el comienza backup

md V:\Server\C\
C:\Backup\SNAPSHOT C: V:\Server\C\LW_C.SNA -L1500 -R -W --LogFile:C:\Backup\Logs\DriveSnapshot_$Date.log

rem Crear directorio de E y el comienza backup

md V:\Server\E
C:\Backup\SNAPSHOT E: V:\Server\E\LW_E.SNA -L1500 -R -W --LogFile:C:\Backup\Logs\DriveSnapshot_$Date.log

rem Crear directorio de F y el comienza backup

md V:\Server\F\
C:\Backup\SNAPSHOT F: V:\Server\F\LW_F.SNA -L1500 -R -W --LogFile:C:\Backup\Logs\DriveSnapshot_$Date.log --exclude:\Temp

rem Mensaje de control

E:\sys\z\Jk  Z_Server_BackupDriveSnapshot
 
 


Título: Re: Batch y Drive Snapshot Como podria capturar un codigo de error?
Publicado por: SuperDraco en 3 Mayo 2011, 12:03 pm
Hola, (Supongo que te refieres a esto) , fácil, prueba así... Te lo he cambiado un pokito xD bueno, si te sirve ya te lo modificas a tu gusto...


(No he podido probarlo muy bien, pero si que informa del error)


EDITO:
Mira, debido a que me está dando errores el format con el signo / y no puedo probarlo bien porque no dispongo de ninguna unidad para formatear, si no puedes etiquetar el volumen con la fecha, prueba así:

Código:
format V: /Q /X /V: %DATE:/=-%




Código
  1. @echo off
  2. SET LOG=C:\Backup\Logs\DriveSnapshot_$Date.log
  3.  
  4. :INICIO
  5.  
  6. rem Formatea, Nombre= Fecha
  7.  
  8. format V: /Q /X /V:%date% /y
  9. call :ERROR
  10.  
  11. rem Crear directorio de C y el comienza backup
  12.  
  13. md V:\Server\C\
  14. call :ERROR
  15. C:\Backup\SNAPSHOT C: V:\Server\C\LW_C.SNA -L1500 -R -W --LogFile:%LOG%
  16.  
  17. rem Crear directorio de E y el comienza backup
  18.  
  19. md V:\Server\E
  20. call :ERROR
  21. C:\Backup\SNAPSHOT E: V:\Server\E\LW_E.SNA -L1500 -R -W --LogFile:%LOG%
  22.  
  23. rem Crear directorio de F y el comienza backup
  24.  
  25. md V:\Server\F\
  26. call :ERROR
  27. C:\Backup\SNAPSHOT F: V:\Server\F\LW_F.SNA -L1500 -R -W --LogFile:%LOG%
  28.  
  29. rem Mensaje de control
  30.  
  31. E:\sys\z\Jk  Z_Server_BackupDriveSnapshot
  32. call :ERROR
  33.  
  34.  
  35.  
  36.  
  37. :ERROR
  38. IF %ERRORLEVEL% GTR 0 (
  39. echo+ ERROR
  40. echo Hubo un error mientras se procesaban los comandos a las %DATE%>>%LOG%
  41. echo+ Pulse una tecla para reintentarlo...
  42. Pause>nul
  43. goto:INICIO
  44. ) ELSE (
  45. goto:eof)


Título: Re: Batch y Drive Snapshot Como podria capturar un codigo de error?
Publicado por: Shadow en 3 Mayo 2011, 15:06 pm
Gracias Pito Crazy! Che pero luego del formateado se cierra el programa....

Cuando pasa por este IF, al ver que no hay error se cierra???  (goto:eof)????
le saque el primer :ERROR despues del formateo y acorte el batch para formateo de una sola unidad y no complicarme tanto.
Cuando funcione, agrego las otras 2...  

Comenzo a copiar y luego desenchufe el disco rigido... y se cerro el programa... :(
pense que iba a quedar el batch abierto anunciando algun error...


el codigo asi como esta anda bien... pero no logro que me diga q pasa si algo falla.

CODIGO:

format E: /Q /X /V:%date% /y


md e:\fs\C\

C:\SNAPSHOT C: E:\fsZEG5\C\LW_C.SNA -L1500 -R -W --LogFile:C:\DriveSnapshot_$Date.log
(call :ERROR) Lo saque... porque se cerraba despues del formateo


E:\sys\zegv\JkBackupDriveSnapshot
call :ERROR


:ERROR
IF %ERRORLEVEL% GTR 0 (
   echo+ ERROR
   echo Hubo un error mientras se procesaban los comandos a las %DATE%>>%LOG%
   echo+ Pulse una tecla para reintentarlo...
   Pause>nul
   goto:INICIO
) ELSE (
   goto:eof)






y una pregunta he bajado  el Auto Batch Creator, y el Dr.Batcher 2.1.5, porque necesito que me marquen cuando hay errores cuando escribo :S


Gracias!
=)


Título: Re: Batch y Drive Snapshot Como podria capturar un codigo de error?
Publicado por: SuperDraco en 3 Mayo 2011, 15:29 pm
No, el batch solo se debe cerrar si llega hasta el final (porque no le pusiste un pause ni nada, ni un mensaje confirmando que el batch finalizó su tarea, así que simplemente se cierra), pero no se puede cerrar debido al call... porque el goto:eof  es para terminar la función del call, para que me entiendas, te lo intentaré traducir:


)ELSE(
goto:eof)=si no hay error, sal de este "call", y goto a donde estabas, y sigue con el siguiente proceso del batch.




Código:
C:\Backup\SNAPSHOT C: V:\Server\C\LW_C.SNA -L1500 -R -W --LogFile:%LOG%
¿que se supone que intentas hacer con ese comando? ¿Snapshot es un ejecutable? ¿Puede ser el que de problemas?


PD: yo he probado el batch como te lo puse, y si que me informaba del error del comando "format" :/


Título: Re: Batch y Drive Snapshot Como podria capturar un codigo de error?
Publicado por: SuperDraco en 3 Mayo 2011, 15:42 pm
Bueno, ponle los "call :error" a tu batch y cambia el call por este otro, a ver si daba algún problema:

Código
  1. :ERROR
  2. IF %ERRORLEVEL%==0 (
  3.    goto:eof
  4. ) ELSE (
  5.   echo+ ERROR
  6.   echo Hubo un error mientras se procesaban los comandos a las %DATE%>>%LOG%
  7.   echo+ Pulse una tecla para reintentarlo...
  8.   Pause>nul
  9.   goto:INICIO)