es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo comparar una cadena ingresada por el usuario con caracteres especiales en un archivo por lotes?

Pregunta: ¿Cómo comparar una cadena ingresada por el usuario que contiene caracteres especiales, por ejemplo 7^7%7&7=7"7!7 en un archivo por lotes de Windows?

Código incompleto:

lang-bat
set/p str1=URL:
rem if %str1%==7^7%7&7=7"7!7 ( // error de sintaxis
rem if "%str1%"=="7^^7%%7^&7=7^"7!7" ( // seguimos con error de sintaxis
echo Bueno
) else (
echo Malo
)

Salida esperada:

lang-mkd

URL: 7^7%7&7=7"7!7
Bueno
URL: 42
Malo

p.s. La cadena ingresada por el usuario es en realidad una URL válida en una situación real, por lo que todos los caracteres válidos en una URL pueden ser una entrada posible. Las comillas se incluyen para una situación más general similar a este problema.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para comparar una cadena ingresada por el usuario que contiene caracteres especiales en un script por lotes de Windows, puedes usar el siguiente código:

    @echo off
    
    setlocal enabledelayedexpansion
    
    set /p str1=URL: 
    set "str2=7^7%%7^&7=7^"7!7"
    
    if "!str1!"=="!str2!" (
        echo Nice
    ) else (
        echo Bad
    )
    

    Explicación:
    – El comando setlocal enabledelayedexpansion habilita el uso de la expansión retardada de variables, que es necesaria para comparar dos cadenas que contienen caracteres especiales.
    – El comando set /p str1=URL: solicita al usuario que ingrese una cadena, la cual se almacena en la variable str1.
    – El comando set "str2=7^7%%7^&7=7^"7!7" establece la variable str2 en el valor de cadena esperado, con los caracteres especiales escapados usando el carácter ^ y el carácter % duplicado.
    – La comparación "!str1!"=="!str2!" utiliza signos de exclamación para activar la expansión retardada de las variables, y comillas para asegurar que los caracteres especiales se escapen correctamente.

    Cuando ejecutes el script e ingreses 7^7%7&7=7"7!7 como entrada del usuario, la salida será Nice. Si en su lugar ingresas 42, la salida será Bad.

Comments are closed.