Hola, me encuentro con dos pequeños problemas.
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:
@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"if not defined %var% goto error
-> Sacar los "%"if var not defined goto error
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)set/p "var=Escriba TEST:"
-> Poner "^" después del texto (como cuando se quiere ingresar caracteres reservados [EJ: ^&])set/p var=Escriba TEST: ^
Así me devolvió: "if ==TEST (goto Ok) else (goto wrong)", y al insertar un caracter colapsó.
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.