SIMULAR UN INPUT VACÍO O ENTER

Iniciado por EN_FORMACION, 17 Diciembre 2012, 10:33 AM

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

EN_FORMACION

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 (dos) [Seleccionar]

@echo off
setlocal enabledelayedexpansion

title CODIGOS DE TUBOS

:INICIO
CLS
color 3f
rem introducción
echo.
echo%date%............%time%
echo.
echo *** INTRODUCIR CODIGOS TUBOS ***
echo.
set /p ntubs=¿Cuántos tubos hay?
echo.

rem definir condiciones
if %ntubos%==1 (goto 1TUBO)
if %ntubos%==2 (goto 2TUBO)
if %ntubos%==3 (goto 3TUBO)... ETC, HASTA 12.
if %ntubos% lss 1 (goto ERROR)
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!! ;)

Eleкtro

#1
Hola,
Antes de nada, usa el botón "Insertar código" cuando postees código, lee las normas.

Cita de: EN_FORMACION en 17 Diciembre 2012, 10:33 AM
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:
if ==1 (goto 1TUBO)
Por lo tanto da error de sintaxis y se cierra,
hay que usar comillas dobles:
if "%ntubos%"=="1" (goto 1TUBO)
y entonces la CMD interpretaría esto si la variable no se define, sin dar error:
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 (dos) [Seleccionar]

@Echo OFF
Title CODIGOS DE TUBOS
color 3f

:INICIO
CLS
Echo+
Echo: %date%............%time%         | MORE
Echo: *** INTRODUCIR CODIGOS TUBOS *** | MORE
SET /P "ntubos=¿Cuántos tubos hay?"

IF NOT defined ntubos (Goto :INICIO)
Echo %ntubos% | FINDSTR "^0 [a-z]" >NUL && (GOTO :INICIO)
IF %ntubos% GTR 12 (Goto :INICIO)

FOR %%X in (%ntubos%) do (GOTO :%%XTUBO)

Pause&exit








EN_FORMACION

#2
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!!