Autor
|
Tema: (BATCH) Tomar valor de una lista (Leído 8,879 veces)
|
FerJGS
Desconectado
Mensajes: 75
|
Hola amigos...mi pregunta es la siguiente... Necesito que batch tome un número aleatorio, y que según ese número ç(que lo puedo sacar perfectamente con %random%...según ese número tome de una lista de txt un valor u otro para la variable...Y que la respuesta sea otro elemento de la lista.
por ejemplo yo tengo en un txt una lista con preguntas, y quiero que me coja una pregunta de forma aleatoria y se tome como valor de la variable. y después...que la respuesta se corresponda con otro elemento de la lista
algo como
número al azar %(random) set preg=línea 5 de preguntas.txt set resp=linea 5 de respuestas.txt If preg=resp goto pregunta2
¿Cómo hago para que pueda tomar esos valores?
|
|
|
En línea
|
|
|
|
maxx93
Desconectado
Mensajes: 99
Lo imposible es la ignorancia de lo posible
|
Aca tome a random un valor de una cifra y adelante una condicion para que el random no sobrepase el numero de preguntas, en el ejemplo preguntas.txt son las preguntas y respuestas.txt son las respuestas y son en total 9 preguntas. :buscarnumero :sig for /f "skip= %nume% delims=" %%a in ('type "preguntas.txt"' ) do ( for /f "skip= %nume% delims=" %%a in ('type "respuestas.txt"' ) do (
Salu2.
|
|
|
En línea
|
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
ya veo, bueno me falla una cosa y es que me saca dos bveces la pregunta, y cuando pongo la respuesta me sale "incorrecto". ¿Por qué? (he creado un txt con las preguntas y otro con las respuestas con sus nombres respectivos)
|
|
|
En línea
|
|
|
|
maxx93
Desconectado
Mensajes: 99
Lo imposible es la ignorancia de lo posible
|
A mi me anda en code , igual aca hago una corrección en esta parte corrijo...
Ya que si es una oracion la respuesta, antes al tener espacio mandaba error y terminaba el bat. Y con respecto a que te aparece incorrecto, quizas es que no estas escribiendo la respuesta en forma textual, osea igual que como esta en el txt. A que te referis con que te saca dos vaces la pregunta?
|
|
|
En línea
|
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Nada, tranquilos, ya me funciona. Ahora resulta que las preguntas son millones, entonces tengo que separarlos en varios bat, y me gustaría crear botones, resulta que no tengo mouse.exe ni click.exe para lo del manejo del ratón.
Y otra cosa...¿Puedo hacer que tres de esas respuestas sean correctas?
Por ejemplo si me saca la pregunta 1, que haya tres respuestas correctas...¿se puede hacer? muchas gracias
|
|
|
En línea
|
|
|
|
maxx93
Desconectado
Mensajes: 99
Lo imposible es la ignorancia de lo posible
|
Yo lo haria asi... :buscarnumero :sig for /f "skip= %nume% delims=" %%a in ('type "preguntas.txt"' ) do ( for /f "skip= %nume% delims=" %%a in ('type "respuestas.txt"' ) do ( for /f "skip= %nume% delims=" %%a in ('type "respuestas2.txt"' ) do ( for /f "skip= %nume% delims=" %%a in ('type "respuestas3.txt"' ) do ( if " %resp%"==" %rta%" (set comp=1 ) if " %resp%"==" %rta2%" (set comp=1 ) if " %resp%"==" %rta3%" (set comp=1 )
Necesitarias dos txt mas el respuestas2.txt y el respuestas3.txt con las respectivas posibles respuestas. Salu2.
|
|
« Última modificación: 9 Agosto 2010, 23:39 pm por maxx93 »
|
En línea
|
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Mmmn...interesante, funciona, muchas gracias...Ahora tengo un problema...
En cada txt hay aproximadamente 700 opcione, más bien más.
Como ahs puesto set a num=%random:~3,1% solo me coge núemros muy pequeños
Si pongo set num=%random% y set /a num=%random% se me cierra la consola y el bat no va...¿cómo hago para que el número esté entre 700 posibilidades?
|
|
|
En línea
|
|
|
|
leogtz
. . .. ... ..... ........ ............. .....................
Colaborador
Desconectado
Mensajes: 3.069
/^$/
|
Si no me equivoco: set /a num=%random% %% 701
|
|
|
En línea
|
|
|
|
maxx93
Desconectado
Mensajes: 99
Lo imposible es la ignorancia de lo posible
|
Tenes que remplazar por...
En donde puse 701 pone el numero de lineas del archivo, una aclaracion que se me paso de largo es que la primera opcion nunca sale asi que escribi cualquier cosa en la primera linea y en donde puse 701 se refiere a 700 preguntas. Salu2.
|
|
|
En línea
|
|
|
|
FerJGS
Desconectado
Mensajes: 75
|
Gracias Leo, ahora sí que me saca de todos los valores... Pero tranquilos, que aún tengo más problemas....En el momento que introduzco la respuesta se me cierra la consola con un error, se cierra tan rápido que no sé que error es, pero creo que he alcanzado a leer "No se esperaba (algo) en este momento.... Podríais corregir mi código chicos? @echo off @mode con cols=90 lines=25 setlocal enabledelayedexpansion :start Color F9 Echo Puede salir cerrando la consola con el bot¢n X. set num=0 set /a num=%random% %% 701 if %num% geq 2 (if %num% leq 700 (goto :sig)) goto :buscarnumero :sig set /a nume=%num%-1 set a=0 for /f "skip=%nume% delims=" %%a in ('type "Pre.txt"') do ( if !a!==0 ( set preg=%%a set a=1)) set b=0 for /f "skip=%nume% delims=" %%n in ('type "Res.txt"') do ( if !b!==0 ( set rta=%%n set b=1)) echo Nombre el i¢n %preg% echo. echo Escriba la respuesta: set /p resp= if %resp%==%rta% (goto bien) else (goto mal) :bien colous 10 15 13,10 "$201$205$205$205$205$205$205$205$205$205$205$187" colous 10 15 13,11 "$186 Correcto $186" colous 10 15 13,12 "$200$205$205$205$205$205$205$205$205$205$205$188" pause>nul cls goto start :mal colous 10 15 13,10 "$201$205$205$205$205$205$205$205$205$205$205$205$205$187" colous 10 15 13,11 "$186 Incorrecto $186" colous 10 15 13,12 "$200$205$205$205$205$205$205$205$205$205$205$205$205$188" pause>nul cls goto start exit
|
|
|
En línea
|
|
|
|
|
|