Autor
|
Tema: [Batch] Se me cae el script (Leído 13,360 veces)
|
VivaElPirateo
Desconectado
Mensajes: 25
Ay dios mío, virgen santísima!!!!!!!!!
|
Buenas tardes: Estoy haciendo un script (.bat), el cual se debe poner las opciones a elegir entre la 1 y la 8. Tengo las opciones para validar que el usuario no pona letras y números que no correspondan, pero, acá va el drama: Al poner un solo escpacio (presionar aunque sea una vez el botón de la tecla espaciadora), se me cae el programa. Necesito saber si existiese una opción para validar esto o, en el peor de los casos, deshabilitar la tecla espaciadora en el script punto bat. Dejo el código por si acaso: [b]:numeros set /p "op=Ingrese una opcion:" for /f "delims=abcdefghijklmnopqrstuvwxyz" %%a in (" %op%" ) do set "variable=true" if " %variable%"=="true" ( echo Ingrese solo numeros del 1 al 8 ) echo Ingrese solo numeros del 1 al 8 ) echo No puede ingresar Caracteres. )[/b]
Cualquier ayuda se agradece!!!
|
|
« Última modificación: 21 Mayo 2012, 03:15 am por EleKtro H@cker »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Jeje no necesitas hacer todo eso.. un menu se hace asi: :menu cls echo 1.- Ver datos de autor. set /p "opcion= elija a donde desea ir: " if %opcion%==2 (goto : mensaje)
Con esto queda mejor, porque no muestra ningun mensaje de error, sino que no hace nada. Lo de set "opcion=" es para que las siguientes veces que vuelva al menu, se borre el contenido de %opcion% para que si el usuario pone enter sin escribir nada, no vaya a donde fue la vez anterior.
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Vaya lio tienes montado... El FOR no es para este tipo de cosas, Ni tampoco es necesario crear cientos de condicionales . Te recomiendo que leas acerca de los comandos FIND, FINDSTR, y CHOICE. Otras alternativas de menúes aparte de la que comentó $Edu$: Menú V.1 :: Solo son seleccionables del número 1 al 8. :: Nota: No muestra ningún error al escribir un espacio o "&" "=" o un número diferente. :Select cls set /p "op=Ingrese una opcion: " Echo " %OP%" | FINDSTR "\ <[1-8]\ >" >NUL || (Goto : Select) :Opcion1 :Opcion2 :Opcion3 :Opcion4 :Opcion5 :Opcion6 :Opcion7 :Opcion8
Menú V.2 :: Solo son seleccionables del número 1 al 8. :: No muestra ningún error al escribir un espacio o un número diferente. :Select cls CHOICE /C 12345678 /M "Ingrese una opcion: " :Opcion1 :Opcion2 :Opcion3 :Opcion4 :Opcion5 :Opcion6 :Opcion7 :Opcion8
|
|
« Última modificación: 21 Mayo 2012, 06:20 am por EleKtro H@cker »
|
En línea
|
|
|
|
VivaElPirateo
Desconectado
Mensajes: 25
Ay dios mío, virgen santísima!!!!!!!!!
|
Tengo lo siguiente hecho: :inicio set /p var= Ingrese un numero entre el 1 y el 8 : for /f "tokens=1* delims=12345678" %%a in ("A0 %var:"=%" ) do if not " %%b"=="" echo No sea porfiado, hombre !!!!! ELIJA SOLAMENTE NUMEROS ENTRE EL 1 Y EL 8. if %var% GTR 8 echo Error de seleccion: la opcion no es valida (Elija entre 1 y 8 )
Con esto logro retener los errores y manda un mensaje de error al usuario, pero no logro que al poner cualquiera de las opciones señalas me envíe ahí hacia ellas. Qué hago???
Jeje no necesitas hacer todo eso.. un menu se hace asi: :menu cls echo 1.- Ver datos de autor. set /p "opcion= elija a donde desea ir: " if %opcion%==2 (goto : mensaje)
Con esto queda mejor, porque no muestra ningun mensaje de error, sino que no hace nada. Lo de set "opcion=" es para que las siguientes veces que vuelva al menu, se borre el contenido de %opcion% para que si el usuario pone enter sin escribir nada, no vaya a donde fue la vez anterior. Al poner en el teclado algo así como: dsalf kpuyt3iriue4thy7uyudfiuh c uy8 t48749 kdsur hkethg3uerf34!"·$%&/ El programa se te va a caer: ya te lo boté. Eso es lo que no quiero.
Los signos = y el &igual botan ese script. Alguna idea de cómo solucionar esto??? Millón de gracias por las respuestas!!! A todo esto: el menú V2 no corre.
|
|
« Última modificación: 21 Mayo 2012, 05:38 am por EleKtro H@cker »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
set /p var= Ingrese un numero entre el 1 y el 8 : for /f "tokens=1* delims=12345678" %%a in ("A0 %var:"=%" ) do if not " %%b"=="" echo No sea porfiado, hombre !!!!! ELIJA SOLAMENTE NUMEROS ENTRE EL 1 Y EL 8.
Con esto logro retener los errores y manda un mensaje de error al usuario, pero no logro que al poner cualquiera de las opciones señalas me envíe ahí hacia ellas. Mal. VivaElPirateo, Como ya he explicado no necesitas un FOR para delimitar nada ni hacer esas cosas, Lee la respuesta de $Edu$, Que está muy bien explicada y detallada, Y Luego si quieres lee la mia. Se te han dado 3 soluciones que te sirven, Hacen exactamente lo que pides, Leelas atentamente y aplicalas a tu code, Deja el FOR. PD: El menú v.2 no te funciona porque usas Windows XP y los parámetros del comando choice cambian. PD2: Lee las normas. Salu2
|
|
« Última modificación: 21 Mayo 2012, 05:36 am por EleKtro H@cker »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
"Los signos = y el & igual botan ese script."
Tienes razon, no sabia eso. Pasa tambien en el codigo que dejo elektro.
Tu intencion entonces es hacer que no se cierre la ventana con esos simboles siquiera? no tengo ni idea, pero te digo que queda feo un mensaje de error, mas vale haces como hace mi codigo que no muestra ningun mensaje, solamente no hace nada hasta que ingresa un valor correcto. Solo que a mi codigo tendrias que agregarle la parte para que no se cierre si ingresa & o = y tal vez algun otro simbolo..
|
|
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
"Los signos = y el & igual botan ese script."
Pasa tambien en el codigo que dejo elektro.
Lo he solucionado con unas comillas dobles xD. salu2 EDITO: y la misma solución en el code de $Edu$if " %opcion%"=="1" (goto : autor) if " %opcion%"=="2" (goto : mensaje) if " %opcion%"=="3" (goto : salir)
PD: El problema es que al no cerrar la variable, & se toma como una instrucción del operador, Y no como un string... salu2
|
|
« Última modificación: 21 Mayo 2012, 06:28 am por EleKtro H@cker »
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
Jeje tienes razon, ahora si queda bien.
|
|
« Última modificación: 21 Mayo 2012, 06:43 am por $Edu$ »
|
En línea
|
|
|
|
Eleкtro
Ex-Staff
Desconectado
Mensajes: 9.885
|
Yo le agregue al mio solo una comilla doble, I win Siento decepcionarte, Pero... No funciona xD Al agregarle la comilla donde la has agregado, No se le da ningún valor a la variable, Por eso pongas lo que pongas no da error XD salu2
|
|
|
En línea
|
|
|
|
$Edu$
Desconectado
Mensajes: 1.842
|
De que me hablas? no se que habras leido.. yo no puse nada.. jajaja, me voy chauuu
|
|
|
En línea
|
|
|
|
|
Mensajes similares |
|
Asunto |
Iniciado por |
Respuestas |
Vistas |
Último mensaje |
|
|
programa batch o script
Scripting
|
meihan
|
0
|
2,150
|
28 Junio 2008, 07:05 am
por meihan
|
|
|
Script BATCH BASICO
Scripting
|
Fx Hound
|
1
|
4,404
|
15 Mayo 2010, 18:25 pm
por flony
|
|
|
Batch Script Compara IPs
Scripting
|
Fluflu
|
3
|
4,036
|
4 Agosto 2010, 14:38 pm
por Eltester
|
|
|
batch q ejecute un script de sql?
Bases de Datos
|
_CrisiS_
|
4
|
4,144
|
11 Noviembre 2011, 21:48 pm
por klaine
|
|
|
Help! Script robocopy en Batch
Scripting
|
sora_ori
|
0
|
2,564
|
29 Enero 2013, 21:19 pm
por sora_ori
|
|