Ayuda con codigo batch.

Iniciado por joaquinrekpo, 26 Julio 2015, 18:24 PM

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

joaquinrekpo

Estoy haciendo un codigo que simula ser un buscador, por deiclo así, de gastos

El codigo es este:
Código (dos) [Seleccionar]
@echo off
Set /p n=Nombre y Apellido:
cls
Set /p c=CCID:
goto kak

:kak
cls
set numero=%random%
if %numero% GEQ 7 goto kak
if %numero% LEQ 0 goto kak
if %numero% 1 goto Juicio
if %numero% 3 goto Apuestas
if %numero% 2 goto Nose
if %numero% 4 goto Compra
if %numero% 5 goto Impuestos
if %numero% 6 goto Robo
goto kak

:Juicio
set motivo=Juicio
goto S

:Apuestas
set motivo=Apuesta
goto S

:Nose
set motivo=Error
goto S

:Compra
set motivo=Compra
goto S

:Impuestos
set motivo=Impuestos
goto S

:Robo
set motivo=Robo
goto S

:S
echo hola
pause
cls
set dinero=%random%
if %dinero% GEQ 10000 goto S
if %dinero% LEQ 40 goto S
cls
echo Perdio %dinero% por %motivo%
pause>nul
exit


quiero ayuda para arreglar este codigo
y me pregunto: ¿Se puede randomizar elecciones de un batch de otro modo?

Eleкtro

#1
¿Por qué usas 6 métodos distintos solamente para asignar el valor de una variable?, es demasiado código para llevar a cabo la misma acción, en su lugar puedes asignar 6 variables con nombre dinámico (_1, _2, _3, etc) o mucho mejor, simular un Array:

@Echo Off & Setlocal EnableDelayedExpansion

Set "reasons=Juicio;Apuesta;Error;Compra;Impuestos;Robo"

Set /A "rand=%RANDOM% %%6" & REM Número aleatorio del 0 al 5.
REM si prefieres utilizar un índice de 1, número aleatorio del 1 al 6:
:: REM %RANDOM% <(--- No eliminar esta linea de comentario REM. Es necesaria para inicializar correctamente RANDOM.
:: Call Set /A "rand=%RANDOM% * 6 / 32768 + 1"

Set /A "count=0"
For %%# in ( %reasons% ) Do (
If !count! EQU %rand% (Call :DirtyWork "!count!" "%%~#")
Set /A "count+=1"
)

Pause&Exit /B 0

:DirtyWork :: %1=Index, %2=Reason
Set /A "index=%~1"
Set    "reason=%~2"
Echo.Index : %index%
Echo.Reason: %reason%
REM buscar...

GoTo :EOF


Saludos








joaquinrekpo

Gracias.

La verdad que soy Newbie (Por no decir Noob) en batch y solo se me ocurrio esta forma