Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: joaquinrekpo en 26 Julio 2015, 18:24 pm



Título: Ayuda con codigo batch.
Publicado por: joaquinrekpo en 26 Julio 2015, 18:24 pm
Estoy haciendo un codigo que simula ser un buscador, por deiclo así, de gastos

El codigo es este:
Código
  1. @echo off
  2. Set /p n=Nombre y Apellido:
  3. cls
  4. Set /p c=CCID:
  5. goto kak
  6.  
  7. :kak
  8. cls
  9. set numero=%random%
  10. if %numero% GEQ 7 goto kak
  11. if %numero% LEQ 0 goto kak
  12. if %numero% 1 goto Juicio
  13. if %numero% 3 goto Apuestas
  14. if %numero% 2 goto Nose
  15. if %numero% 4 goto Compra
  16. if %numero% 5 goto Impuestos
  17. if %numero% 6 goto Robo
  18. goto kak
  19.  
  20. :Juicio
  21. set motivo=Juicio
  22.  
  23. :Apuestas
  24. set motivo=Apuesta
  25.  
  26. :Nose
  27. set motivo=Error
  28.  
  29. :Compra
  30. set motivo=Compra
  31.  
  32. :Impuestos
  33. set motivo=Impuestos
  34.  
  35. :Robo
  36. set motivo=Robo
  37.  
  38. :S
  39. echo hola
  40. cls
  41. set dinero=%random%
  42. if %dinero% GEQ 10000 goto S
  43. if %dinero% LEQ 40 goto S
  44. cls
  45. echo Perdio %dinero% por %motivo%
  46. pause>nul

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


Título: Re: Ayuda con codigo batch.
Publicado por: Eleкtro en 26 Julio 2015, 19:12 pm
¿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:

Código:
@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


Título: Re: Ayuda con codigo batch.
Publicado por: joaquinrekpo en 28 Julio 2015, 15:37 pm
Gracias.

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