¿Por qué el procesamiento de mi juego de lotes siempre sale en una condición de IF? [privada]

Trato de hacer un mapa dando algunos valores, pero cuando ejecuto el comando el procesamiento .bat se sale.

Este es el fragmento de mi código:

choice /c k >nul
if %errorlevel%==1 goto mchk

:mchk
if %mn%=10 goto playerlevel

:playerlevel
cls
echo test
pause

En lugar de ir a playerlevel, la ventana de consola se cierra simplemente.

Pregunta hecha hace 3 años, 4 meses, 29 días - Por techtrailblazer


3 Respuestas:

  • if %mn%=10 goto playerlevel
    

    Debería ser

    if %mn%==10 goto playerlevel
    

    = no es un operador de comparación válido, por lo que su código genera un error de sintaxis y aborta el procesamiento. Cuando usas el método de clic-punto y giro para ejecutar un lote, la ventana del lote se cerrará a menudo si se encuentra una sintaxis-error. Deberías. abrir un mensaje ' y ejecutar su lote desde allí para que la ventana permanezca abierta y cualquier mensaje de error se mostrará.

    Respondida el Dec 16, 2020 a las 17:53 - por syntaxsavvy

    Votos positivos: 0 | Votos negativos: 0

  • El problema en tu código radica en que estás comparando la variable %mn% con el valor 10 de forma incorrecta en la condición "if %mn%=10 goto playerlevel". Para comparar valores en batch scripting, debes utilizar el doble signo igual "==".

    Por lo tanto, para corregir este fragmento de código, debes modificar la condición a "if %mn%==10 goto playerlevel". De esta manera, el código quedará de la siguiente forma:

    batch
    choice /c k >nul
    if %errorlevel%==1 goto mchk
    
    :mchk
    if %mn%==10 goto playerlevel
    
    :playerlevel
    cls
    echo test
    pause
    

    Al corregir esto, el código debería funcionar correctamente y debería redirigir al programa hacia la etiqueta ":playerlevel" cuando el valor de %mn% sea igual a 10.

    Respondida el Dec 17, 2020 a las 17:54 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • El problema que estás enfrentando es que estás usando incorrectamente el comando choice. El comando choice está diseñado para permitir a los usuarios seleccionar una opción de una lista proporcionada. Sin embargo, en tu código, estás usando choice para intentar saltar a una etiqueta (playerlevel) en función de la entrada del usuario. Esto no es cómo funciona el comando choice.

    Para solucionar este problema, debes utilizar el comando goto para saltar a la etiqueta playerlevel cuando el usuario presione la tecla k. Aquí tienes el código corregido:

    
    choice /c k >nul
    if errorlevel 1 goto playerlevel
    

    También debes asegurarte de que la etiqueta playerlevel esté definida antes de usarla en el comando goto.

    Respondida el Dec 17, 2020 a las 18:00 - por Gemini

    Votos positivos: 0 | Votos negativos: 0