Primer Problema:
No encuentro que estoy haciendo mal al tratar de que cuando una variable no esta definida vaya a un label, en lugar de ello el batch colapsa.
Segundo Problema:
Me gustaría que cuando el usuario inserte el valor de una variable no pueda insertar determinados caracteres que conllevan al colapso del batch.
Dejo el code para que se entienda mejor:
Código:
@echo off
title EJEMPLO VARIANTES
:menu
set/p var=Escriba TEST:
if %var%==TEST (goto Ok) else (goto wrong)
if %var% not defined goto error
:error
echo Ud. no inserto texto alguno, por favor escriba TEST.
pause >nul
cls
goto menu
:wrong
echo ERROR UD. NO INSERTO TEST, por favor vuelva a intentarlo.
pause >nul
cls
goto menu
:Ok
echo OK, todo en orden.
pause >nul
cls
exit
El Primer Problema:
No se porque cuando le doy Enter a la primera vez, es decir sin definir %var% en lugar de ir a error se cierra el programa.
Probé de hacer lo siguiente:
-> Cambiar el orden del "if not defined"
Código:
if not defined %var% goto error
-> Sacar los "%"
Código:
if var not defined goto error
Código:
if not defined var goto error
Y ninguno me funcionó.
El Segundo Problema:
Mi intención es que si el usuario inserta alguno de los sig. caracteres el programa no colapse:
CARACTERES: & >< |
Así como si el usuario ingresa un espacio dentro del texto tampoco lo haga.
Para esto intente lo siguiente:
-> Poner comillas dobles en la variante (como cuando de trabaja con rutas)
Código:
set/p "var=Escriba TEST:"
-> Poner "^" después del texto (como cuando se quiere ingresar caracteres reservados [EJ: ^&])
Código:
set/p var=Escriba TEST: ^
Así me devolvió: "if ==TEST (goto Ok) else (goto wrong)", y al insertar un caracter colapsó.
Código:
set/p "var=Escriba TEST: "^
Al hacer esto no me devolvió la cadena, pero igual colapsa.
Espero mi duda sea entendible.
Desde Ya gracias por su ayuda.