Hola, me gustaría saber si en batch hay alguna manera de por ejemplo: se elija al azar (aleatoriamente) entre por ejemplo:
@echo off
Elegir entre:
echo Hola
echo Buenos dias
echo Ey que pasa!
pause
Muchas gracias de antemano
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
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
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,
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
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
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...
@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!