Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: EN_FORMACION en 17 Diciembre 2012, 10:33 am



Título: SIMULAR UN INPUT VACÍO O ENTER
Publicado por: EN_FORMACION en 17 Diciembre 2012, 10:33 am
Buenas,
soy totalmente neófita en el mundo del batch pero estoy progamando como puedo pequeños ejecutables en este código que luego compilo en .exe para que me lo acepte un robot que funciona con scripts.

total, que necesito saber cómo escribir en código "cuando alguien por error no entre la info que pido y le dé sin querer al ENTER".

Por ahora lo he intentado con lo siguiente, es la línea que hay en azul marino y sobresaltado AL FINAL DE TODO, os he escrito un poco del resto para que se entienda el contexto... o eso espero:
Código
  1. @echo off
  2. setlocal enabledelayedexpansion
  3.  
  4. title CODIGOS DE TUBOS
  5.  
  6. :INICIO
  7. CLS
  8. color 3f
  9. rem introducción
  10. echo%date%............%time%
  11. echo *** INTRODUCIR CODIGOS TUBOS ***
  12. set /p ntubs=¿Cuántos tubos hay?
  13.  
  14. rem definir condiciones
  15. if %ntubos%==1 (goto 1TUBO)
  16. if %ntubos%==2 (goto 2TUBO)
  17. if %ntubos%==3 (goto 3TUBO)... ETC, HASTA 12.
  18. if %ntubos% lss 1 (goto ERROR)
  19. if %ntubos% gtr 12 (goto ERROR)
if ["%ntubs%"]=[""] (goto ERROR!)

también lo he probado inventándome variantes:
if %ntubs%=!"" (goto ERROR!)
if [%ntubs%]=[""] (goto ERROR!)
if %ntubs%="" (goto ERROR!)

pero no se me ocurre nada más... :huh:

siempre que le doy al ENTER me cierra el arxivo.

gracias por todo!! y felices fiestas!! ;)


Título: Re: SIMULAR UN INPUT VACÍO O ENTER
Publicado por: Eleкtro en 17 Diciembre 2012, 11:39 am
Hola,
Antes de nada, usa el botón "Insertar código" cuando postees código, lee las normas.

Código:
if %ntubos%==1 (goto 1TUBO)
siempre que le doy al ENTER me cierra el arxivo.

Se te cierra porque al pulsar "enter" sin escribir nada, la variable no se llega a definir, y la CMD interpreta esto:
Código:
if ==1 (goto 1TUBO)
Por lo tanto da error de sintaxis y se cierra,
hay que usar comillas dobles:
Código:
if "%ntubos%"=="1" (goto 1TUBO)
y entonces la CMD interpretaría esto si la variable no se define, sin dar error:
Código:
if ""=="1" (goto 1TUBO)
De todas formas, eso hazlo sólamente cuando compares caracteres, no con números o números exactos, pero no cuando compares si un número es mayor o menor como ene ste caso.

Aquí tienes:
Código
  1. @Echo OFF
  2. Title CODIGOS DE TUBOS
  3. color 3f
  4.  
  5. :INICIO
  6. CLS
  7. Echo: %date%............%time%         | MORE
  8. Echo: *** INTRODUCIR CODIGOS TUBOS *** | MORE
  9. SET /P "ntubos=¿Cuántos tubos hay?"
  10.  
  11. IF NOT defined ntubos (Goto :INICIO)
  12. Echo %ntubos% | FINDSTR "^0 [a-z]" >NUL && (GOTO :INICIO)
  13. IF %ntubos% GTR 12 (Goto :INICIO)
  14.  
  15. FOR %%X in (%ntubos%) do (GOTO :%%XTUBO)
  16.  
  17. Pause&exit


Título: Re: SIMULAR UN INPUT VACÍO O ENTER
Publicado por: EN_FORMACION en 17 Diciembre 2012, 12:09 pm
Muchísimas gracias!!
Lo pruebo y te comento algo.

Muchas gracias, de nuevo.
 :)



Genial, EleKtro!

Me funciona a la perfección!

Muchas gracias por la ayuda y los consejos y disculpad todos por leerme las normas en diagonal... las prisas no son buenas y menos en el trabajo!!

Hasta otra!!