Ayuda codigo batch

Iniciado por edogawa93, 9 Junio 2007, 11:05 AM

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

edogawa93

Hola, soy nuevo, y no muy avanzado en batch, le podríais echar un vistazo al code? No se donde esta el fallo, a ver si alguien lo descubre xDD
@echo off
title PingPong
:menu
echo Introducir la puntuacion del Jugador 1
set /p p1=
echo Introducir la puntuacion del Jugador 2
set /p p2=
set /a punt=p1+p2
set /a op1=punt/2
set /a op2=op1*2
set /a res=punt-op2
if res=0(
echo Toca cambiar de saque
pause
) else (
echo No toca cambiar de saque
pause
)
exit

zhynar_X

Hola, el fallo lo tienes al comprar y en la variable.

-Para cargar una variable tienes que ponerla asi "%variable% y para comprar has uesto "=" y tienes que poner "==". Te dejo el codigo un poco cambiado para que funcione:

@echo off
title PingPong
:menu
echo Introducir la puntuacion del Jugador 1
set /p p1=
echo Introducir la puntuacion del Jugador 2
set /p p2=

set /a punt=p1+p2
set /a op1=punt/2
set /a op2=op1*2
set /a res=punt-op2

if %res%==0 goto c
if %res% NEQ 0 goto incorrecto

:incorrecto
echo No toca cambiar de saque
pause
exit

:c
echo Toca cambiar de saque
pause
exit


Saludos
Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)

D4RIO

Mmm, estás seguro de que así funciona??
Mira, usaste:

.
.
.
set /a punt=p1+p2
set /a op1=punt/2
set /a op2=op1*2
set /a res=punt-op2
.
.
.


y en la parte derecha de las expresiones aritméticas tenías que usar %% en las variables que querés que se reemplacen por su valor, o sea, la primer línea:

set /a punt=%p1%+%p2%

Y otra cosa, las expresiónes de las strings a comparar en una if se ponen entre corchetes, así ésta línea te quedaría:

if [%res%]==[0] goto c

En fin, tu código mejorado quedaría:

@echo off
title PingPong
:menu
echo Introducir la puntuacion del Jugador 1
set /p p1=
echo Introducir la puntuacion del Jugador 2
set /p p2=

set /a punt=%p1%+%p2%
set /a op1=%punt%/2
set /a op2=%op1%*2
set /a res=%punt%-op2

if [%res%]==[0] goto c
if %res% NEQ 0 goto incorrecto

:incorrecto
echo No toca cambiar de saque
pause
exit

:c
echo Toca cambiar de saque
pause
exit


No lo probé por falta de ganas, pero me la paso el dia escribiendo bats así que creo que eso está correcto.
OpenBSDFreeBSD

zhynar_X

Hola, tienes razon no me di cuenta, pero aun asi lo prove y funciona.

Saludos
Me he creado un blog:
http://zhynar.blogspot.com  Aver si os gusta! ;)


Optimista es aquel que cree poder resolver un atasco de trafico tocando el claxon (Anonimo)