[DUDA] Elegir al azar en batch

Iniciado por MDd2, 23 Marzo 2017, 17:09 PM

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

MDd2

Hola, me gustaría saber si en batch hay alguna manera de por ejemplo: se elija al azar (aleatoriamente) entre por ejemplo:
Código (dos) [Seleccionar]
@echo off
Elegir entre:
echo Hola
echo Buenos dias
echo Ey que pasa!
pause


Muchas gracias de antemano
# "No temo a los ordenadores; lo que temo es quedarme sin ellos"
-- Isaac Asimov

TheIllusionist

Si, con el %random% pero no entiendo que quieres q se muestre al azar, hay solo se va a imprimir lo escrito
:rolleyes:
q pases un buen día
La maquina más segura es la que esta apagada y encerrada en una caja fuerte

La sociedad no esta preparada para la actualidad

MDd2

Cita de: CommandPoison en 23 Marzo 2017, 19:13 PM
Si, con el %random% pero no entiendo que quieres q se muestre al azar, hay solo se va a imprimir lo escrito
:rolleyes:
q pases un buen día

Quiero que se muestre solo una de las 3 opciones, es decir que solo se ejecute uno de los 3 comandos al azar
# "No temo a los ordenadores; lo que temo es quedarme sin ellos"
-- Isaac Asimov

TheIllusionist

Cita de: MDd2 en 23 Marzo 2017, 19:15 PM
Quiero que se muestre solo una de las 3 opciones, es decir que solo se ejecute uno de los 3 comandos al azar
Haber hay no ahí ninguna opción, pero creo que mas o menos se lo que quieres realizar,
Código (dos) [Seleccionar]

rem aqui estan tus opciones(en verdad esto es un menu, siempre se va a mostrar)
echo opción1
echo opcion2
echo opcion3
rem esto te dara un numero del 0 al 2
numeroaleatorio = %random% %% 3
if numeroaleatorio==0:
       echo opcion1
if numeroaleatorio==1:
      echo opcion2
if numeroaleatorio==2:
      echo opcion3


Ahora si solo quieres que se muestre una y que las demas no se vean, lo que debes poner es lo siguiente
Código (dos) [Seleccionar]

numeroaleatorio = %random% %% 3
if numeroaleatorio==0:
       echo opcion1
if numeroaleatorio==1:
      echo opcion2
if numeroaleatorio==2:
      echo opcion3

Y ya está, pero batch no es un lenguaje de verdad, hazme caso a mi me pasaba lo mismo hace nada XD
La maquina más segura es la que esta apagada y encerrada en una caja fuerte

La sociedad no esta preparada para la actualidad

Eleкtro

#4
Arriba te han mostrado una solución basada en condicionales, pues otra opción según las necesidades de cada cual podría ser simular un array, aunque para hacer este tipo de cosas en Batch casi es preferible pegarse un tiro :xD...

Código (dos) [Seleccionar]
@Echo Off & Setlocal EnableDelayedExpansion

Set    "array=Hola,Buenos_dias,Ey_que_pasa!"
Set /A "arrayLength=3"
Set /A "rand=%RANDOM% %%%arrayLength%"

Set /A "count=0"
For %%# in ( %array% ) Do (
if !count! EQU %rand% (
Set "value=%%#"
Set "value=!value:_= !"
Echo !value!
       Set /A "count=0"
GoTo :Break
)
Set /A "count+=1"
)
:Break

Pause&Exit /B 0


'Saludos!