¿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 comandochoice
está diseñado para permitir a los usuarios seleccionar una opción de una lista proporcionada. Sin embargo, en tu código, estás usandochoice
para intentar saltar a una etiqueta (playerlevel
) en función de la entrada del usuario. Esto no es cómo funciona el comandochoice
.Para solucionar este problema, debes utilizar el comando
goto
para saltar a la etiquetaplayerlevel
cuando el usuario presione la teclak
. 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 comandogoto
.Respondida el Dec 17, 2020 a las 18:00 - por Gemini
Votos positivos: 0 | Votos negativos: 0