Validar un espacio vacío

Tengo el siguiente lote, me fx bien si no ingreso nada o si ingreso un valor, pero si ingreso un espacio vacío,(es decir apretó la barra espaciadora del teclado una o dos veces y luego press enter) no me fx el lote. Y me tira error "NO SE ESPERABA ( EN ESTE MOMENTENTO."

Cls
@echo off
set variable=VACÍO
echo ingrese un numero??
set /p variable=
if %variable%==VACÍO (
echo Usted no ha ingresado nada
) else (
Echo valor ingresado %variable%
)

Un abrazo

1 respuesta

Respuesta
1

Para salvar ese escollo basta con que sustituyas la condición del "if" como sigue:

if "%variable%"=="VACÍO" (o cualquier otra forma de impedir que el if se aplique a algo que solo tenga espacios.Si a partir de aquí tienes alguna otra duda, o si esto no funcionara como creo que debe hacerlo solo tienes que seguir preguntando.

Vuelvo a responder porque el corrector de texto de la página me ha jugado una mala pasada y ha metido unos "<div>" que no debían estar en el original. Copio la respuesta desactivando el corrector de texto:

Para salvar ese escollo basta con que sustituyas la condición del "if" como sigue:
if "%variable%"=="VACÍO" (

O cualquier otra forma de impedir que el if se aplique a algo que solo tenga espacios.

Si a partir de aquí tienes alguna otra duda, o si esto no funcionara como creo que debe hacerlo solo tienes que seguir preguntando.

Hla experto disculpe que lo vuelva a molestar pongo lo que ud me corrigió, no me tira error pero me dice: valor ingresado, y nada mas . es como que entra en el IF.

cls
@echo off
set variable=VACÍO
echo ingrese un numero??
set /p variable=
if "%variable%"=="VACÍO" (
echo Usted no ha ingresado nada
) else (
echo valor ingresado %variable%
)

Efectivamente, si ingresas espacios te indica que has ingresado algo, pero como son espacios no se ven. No sé que querrías que presentase en estas circunstancias. A lo mejor quieres que compruebe, mediante otro IF si se trata de un espacio o de más espacios...

Hla Experto disculpe mi demora, pensé como hacerlo pero no se me ocurre. La idea seria si el usuario me ingrese un valor vacío o un espacio vacío , debe avisar y decir datos erróneos, algo parecido a mi ejemplo puesto abajo, pero el tema seria avisar al usuario la entrada de datos es errónea en el caso de que me ingrese valor vacío(enter sin tipear nada) o valor vacío con espacios en blanco(dos espacios con barra espaciadora y luego enter).

el ejemplo de abajo fx a medias, si ingreso un espacio vacío ( es decir barra espacidora 1 o 2 veces y luego enter) me lo toma como que desconoce al usuario y me lo tendría que tomar como entrada invalida, en cambio si yo ingreso enter sin poner nada me lo toma como entrada invalida y me aparece el msg ingrese el numero hasta que ingrese algo, y eso estaría bien.

@echo off
set variable=VACÍO
:comienzo
echo ingrese un numero??
set /p variable=
if "%variable%"=="VACÍO" (
goto comienzo
) else (
goto preguntar
)
:preguntar
if "%variable%" == "roberto" (
echo Te conozco
) ELSE (
echo No te conozco
)

Si, como se dice en algún lugar del texto, esperas un número podrías hacer alguna comparación con mayor o igual que algo. También hay formas de limpiar los espacios del valor de la variable antes de hacer la comparación. Prueba, por ejemplo, con esta variación de tu primera versión:

Cls
@echo off
set variable=
echo ingrese un numero??
set /p variable=
if "%variable%"=="" (
echo Usted no ha ingresado nada
goto :EOF
)
set variable=%variable: =%
if "%variable%"=="" (
echo Usted no ha ingresado nada
) else (
Echo valor ingresado %variable%
)

Seguramente se puede compactar pero hoy no tengo mucho tiempo para depurarlo. La instrucción set variable=%variable: =% sustituye los espacios (lo que hay delante del igual) por nada (lo que hay detrás del igual) en el contenido del valor de variable. Pero por razones que no me ha dado tiempo a averiguar no funciona correctamente si la coloco justo antes del primer if.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas