Hola a todos otra vez.
Amigos, tengo este problema: necesito saber si una de mis variables tiene un símbolo como valor almacenado, pero no sé cómo inquirirlo. Cuando se trata de una letra, texto normal o números, basta con escribir
If %variable% == 123
o también
If %variable% == texto
etc. Pero cuando intento hacer lo mismo con un símbolo (ya me ha pasado con el slash [/] y la comilla ["]) no funciona, supongo que porque son caracteres especiales dentro del BATCH.
Así pues, mi pregunta es: ¿cómo se deben escribir esas sentencias dentro del IF?
Por favor, agradezco su ayuda.
Trata así:
if ["%variable%"]==["valor"] ...
No funciona. Mira:
set /p ruta=Escriba la ruta:
set cont=0
goto Contar
:Contar
setlocal enabledelayedexpansion
if "!ruta:~%cont%,1!" neq "" set /a "cont+=1" & set uc="!ruta:~%cont%,1!" & goto Contar
endlocal
goto AoC
:AoC
If ["%uc%"]==["\"] (
echo Es slash
pause
)
If ["%uc%"] neq ["\"] (
echo No es slash, es %uc%
pause
)
Eso es lo que tengo. No funciona porque aunque el último caracter es \ (almacenado en %uc%) sólo entra en el segundo If, como si no lo fuera.
¿Qué hice mal?
Quitale el endlocal.
Amigo, sigue sin funcionar. ¿Ya lo probaste?
No, hace meses que no uso Windows.
Deja veo que puede ser.
Dejalo así, a ver como te va:
setlocal enabledelayedexpansion
set /p ruta=Escriba la ruta:
set cont=0
goto Contar
:Contar
if "!ruta:~%cont%,1!" neq "" (
set /a "cont+=1"
set uc="!ruta:~%cont%,1!"
goto:Contar
)
goto AoC
:AoC
If ["%uc%"]==["\"] (
echo Es slash
pause
)
If ["%uc%"] neq ["\"] (
echo No es slash, es %uc%
pause
)
Nada pana! Lo copié y pegué y sigue tomando la segunda opción. No entiendo.
Bueno pana, si quieres pruebas después y me dices. Gracias por todo.
Mañana checo con un Windows.
Describeme que es lo que quieres que haga el código y cual es la entrada de datos que le das.
Bueno, lo que necesito es saber si el último caracter de una variable string es slash (\) o no. Ya me ayudaron con el código para almacenar el último caracter; eso lo tengo listo. Lo único que me hace falta es establecer la condición que debe cumplirse cuando el caracter sea slash.
Como ya he mencionado, la sentencia común del If (If ["%variable%"]==["\"]) no quiere funcionarme. Así que estoy atado de manos pues no sé qué otra cosa hacer. Esa es toda la ayuda que necesito.
Estaré pendiente de tu respuesta.
Tienes razón, no lo reconoce, pero en fin, podrías hacer algo así:
set "variable=c:\windows\"
echo %variable:~-1% | find "\" > nul 2>&1 && (
echo Si lo tiene.
) || (
echo No lo tiene.
)
Aún no lo he probado, pero me gustaría saber si %variable:~-1% es para mostrar el último caracter. No me sabía esa función. ¿Sí es para eso?
Sí.