Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: ShootingStar en 24 Octubre 2011, 23:11 pm



Título: Hacer un Batch de control de versión
Publicado por: ShootingStar en 24 Octubre 2011, 23:11 pm
Estimados amigos:
Quizás alguien me pueda orientar como resolver esta situación.
Tengo este escenario: un servidor y un par de terminales, en el servidor se graba el menu.exe actualizado, pero cada terminal debe verificar antes de ejecutar, si la versión de menu.exe es más nueva q’la de la terminal, en ese caso antes de ejecutarlo debe copiarlo desde el servidor a la terminal y luego si ejecutarlo.
Si el .exe del servidor es +nuevo que el de la terminal REEMPLAZAR
------------------------------------------------------------
@Echo off
ArchExe := ‘menu.exe’
Ruta1   := ‘Unidad1:\Direct\SubDirect\’
Ruta2   := ‘Unidad2:\Direct\SubDirect\’

Item1 := Ruta1 + ArchExe
Item2 := Ruta2 + ArchExe

Rem  Comienzo, pregunta por el 1º
:Paso1
IF EXIST %Item1% goto Paso2
goto End

Rem  Si encontró el 1º, pregunta por el 2º
:Paso2
IF EXIST %Item2% goto Paso3
goto End

Rem  Compara el 1º con el 2º
:Paso3
IF NOT      COMPARACION        goto Paso4
goto End

Rem  Reemplaza
:Paso4
Copy %Item1% %Item2%
goto End

:End
Menu.exe
-----------------------------------------------------------
Este es el esquema que traté de llevar adelante, pero no supe que usar para hacer la COMPARACION


Título: Re: Hacer un Batch de control de versión
Publicado por: DameBanda en 5 Noviembre 2011, 15:01 pm
Hola, no entendí muy bien. Dices que esto es batch? en tal caso será pseudocode no?? :-[
Dices que compara, [los archivos, las versiones, etc??]

Por favor, se un poco mas específico  ;)


Título: Re: Hacer un Batch de control de versión
Publicado por: Eleкtro en 6 Noviembre 2011, 10:49 am
No he probado demasiado mi modificación pero creo que no he cometido ningún error, ya nos cuentas  :)


Código
  1. @Echo off
  2.  
  3. Rem EleKtrO H@ckeR
  4.  
  5. Set ArchExe="menu.exe"
  6. Set Ruta1= "Unidad1:\Direct\SubDirect\"
  7. Set Ruta2= "Unidad2:\Direct\SubDirect\"
  8.  
  9. Set Item1="Ruta1\ArchExe"
  10. Set Item2="Ruta2\ArchExe"
  11.  
  12. Rem  Comienzo, pregunta por el 1º
  13. :Paso1
  14. IF EXIST "%Item1%" (goto :Paso2) ELSE (goto :End)
  15.  
  16. Rem  Si encontró el 1º, pregunta por el 2º
  17. :Paso2
  18. IF EXIST "%Item2%" (goto :Paso3) ELSE (goto :End)
  19.  
  20. ################################################################################################################################>nul
  21.  
  22. :Paso3
  23.  
  24. REM Seteamos la fecha y la hora de creacion del Item 1 e Item 2...
  25.  
  26. For /F "Tokens=1,2,3*" %%a in ('dir /tc/od "ITEM1.EXE" ^| Find "ITEM1.EXE"') do (
  27. Set Fecha_de_creacion_Item1=%%a
  28. Set Hora_de_creacion_Item1=%%b
  29. )
  30.  
  31. For /F "Tokens=1,2,3*" %%a in ('dir /tc/od "ITEM2.EXE" ^| Find "ITEM2.EXE"') do (
  32. Set Fecha_de_creacion_Item2=%%a
  33. Set Hora_de_creacion_Item2=%%b
  34. )
  35.  
  36. Rem  Compara el 1º con el 2º
  37.  
  38. :Creation Date
  39.  
  40. REM Si la fecha de creacion del item 1 es mayor que el 2...
  41. If %Fecha_de_creacion_Item1:~-0,5% GTR %Fecha_de_creacion_Item2:~-0,5% (Goto :Paso4)
  42.  
  43. REM Si la fecha de creacion del item 1 es menor que el 2...
  44. If %Fecha_de_creacion_Item1:~-0,5% LSS %Fecha_de_creacion_Item2:~-0,5% (Goto :End)
  45.  
  46. REM Si la fecha de creacion del item 1 es igual que el 2...
  47. If %Fecha_de_creacion_Item1:~-0,5% EQU %Fecha_de_creacion_Item2:~-0,5% (Goto :Creation Hour)
  48.  
  49. echo+ ERROR en la comparacion
  50.  
  51. :Creation Hour
  52.  
  53. REM Si la hora de creacion del item 1 es mayor que el 2...
  54. If %Hora_de_creacion_Item1% GTR %Hora_de_creacion_Item2% (Goto :Paso4)
  55.  
  56. REM Si la hora de creacion del item 1 es menor que el 2...
  57. If %Hora_de_creacion_Item1% LSS %Hora_de_creacion_Item2% (Goto :End)
  58.  
  59. REM Si la hora de creacion del item 1 es igual que el 2...
  60. If %Hora_de_creacion_Item1% EQU %Hora_de_creacion_Item2% (Goto :End)
  61.  
  62. echo+ ERROR en la comparacion
  63.  
  64. ################################################################################################################################>nul
  65.  
  66. Rem  Reemplaza
  67. :Paso4
  68. Copy /Y "%Item1%" "%Item2%" >nul
  69. goto :End
  70.  
  71. :End
  72. "Menu.exe"
  73.