Hacer un Batch de control de versión

Iniciado por ShootingStar, 24 Octubre 2011, 23:11 PM

0 Miembros y 1 Visitante están viendo este tema.

ShootingStar

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

DameBanda

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  ;)
"Amarillo, pensó" Douglas Adams




[img]http:/

Eleкtro

#2
No he probado demasiado mi modificación pero creo que no he cometido ningún error, ya nos cuentas  :)


Código (dos) [Seleccionar]
@Echo off

Rem EleKtrO H@ckeR

Set ArchExe="menu.exe"
Set Ruta1= "Unidad1:\Direct\SubDirect\"
Set Ruta2= "Unidad2:\Direct\SubDirect\"

Set Item1="Ruta1\ArchExe"
Set Item2="Ruta2\ArchExe"

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

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

################################################################################################################################>nul

:Paso3

REM Seteamos la fecha y la hora de creacion del Item 1 e Item 2...

For /F "Tokens=1,2,3*" %%a in ('dir /tc/od "ITEM1.EXE" ^| Find "ITEM1.EXE"') do (
Set Fecha_de_creacion_Item1=%%a
Set Hora_de_creacion_Item1=%%b
)

For /F "Tokens=1,2,3*" %%a in ('dir /tc/od "ITEM2.EXE" ^| Find "ITEM2.EXE"') do (
Set Fecha_de_creacion_Item2=%%a
Set Hora_de_creacion_Item2=%%b
)

Rem  Compara el 1º con el 2º

:Creation Date

REM Si la fecha de creacion del item 1 es mayor que el 2...
If %Fecha_de_creacion_Item1:~-0,5% GTR %Fecha_de_creacion_Item2:~-0,5% (Goto :Paso4)

REM Si la fecha de creacion del item 1 es menor que el 2...
If %Fecha_de_creacion_Item1:~-0,5% LSS %Fecha_de_creacion_Item2:~-0,5% (Goto :End)

REM Si la fecha de creacion del item 1 es igual que el 2...
If %Fecha_de_creacion_Item1:~-0,5% EQU %Fecha_de_creacion_Item2:~-0,5% (Goto :Creation Hour)

echo+ ERROR en la comparacion
Pause

:Creation Hour

REM Si la hora de creacion del item 1 es mayor que el 2...
If %Hora_de_creacion_Item1% GTR %Hora_de_creacion_Item2% (Goto :Paso4)

REM Si la hora de creacion del item 1 es menor que el 2...
If %Hora_de_creacion_Item1% LSS %Hora_de_creacion_Item2% (Goto :End)

REM Si la hora de creacion del item 1 es igual que el 2...
If %Hora_de_creacion_Item1% EQU %Hora_de_creacion_Item2% (Goto :End)

echo+ ERROR en la comparacion
Pause

################################################################################################################################>nul

Rem  Reemplaza
:Paso4
Copy /Y "%Item1%" "%Item2%" >nul
goto :End

:End
"Menu.exe"
exit