Me dice (No se esperaba goto en este momento)(Solucionado)

Iniciado por David8choceros8chounos, 1 Marzo 2017, 18:21 PM

0 Miembros y 1 Visitante están viendo este tema.

David8choceros8chounos

Código (dos) [Seleccionar]
set /p a =

if %a%==1 goto log
if %a%==2 goto exit

Me podrian ayudar ?  :(                                  ;D les agradeceria mucho que me dijieran plis  :-*   Gracias si me leisteXD      
CitarDe Mi...
Y esto esta en .bat eh? las etiquetas aunque no esten no importa.

Orubatosu

Deberías pedir que lo muevan a batch, porque esto es código de consola DOS ¿no?
"When People called me freak, i close my eyes and laughed, because they are blinded to happiness"
Hideto Matsumoto 1964-1998


Eleкtro

#3
Hola. Los mensajes de error que empiezan por "No se esperaba X..." implican un error de sintaxis en el código.

El error lo tienes concretamente al dejar un espacio en blanco entre el nombre de la variable y el operador de asignación (set /p a =), con eso lo que consigues es crear una variable de nombre "a " (nótese el espacio), no "a", y entonces la estás intentando evaluar mal, por que para evaluar esa variable deberías escribir %a %, no %a% en las condicionales de tu código.
En otras palabras, el error de "No se esperaba GoTo" salta por que estás intentando comparar NADA (o nulo), con 1. Para que se entienda mejor, esto es lo que realmente estás haciendo: if ==1 goto log.

Este problema te sucede basicamente por que estás utilizando malos hábitos de programación en Batch con los que solo conseguirás generar errores tontos. Debes hacer uso de las comillas dobles para encerrar los nombres de las variables y los parámetros/argumentos en general para evitar que esto te vuelva a suceder. Y de paso utiliza también los operadores de apertura y cierre de agrupación de comandos (los paréntesis)...

Ejemplo:

Código (dos) [Seleccionar]
@Echo OFF

SET /P "var="
If "%var%" EQU "1" (GoTo :Log)
If "%var%" EQU "2" (GoTo :Exit)

:Log
REM ...

:Exit
REM ...

( Aunque tu intención sea evaluar valores númericos (1, 2) la variable %var% es un string, y se debe tratarlo como tal en las condicionales. )

¡Saludos!








Hitman062

#4
Hola amigo, lo probé al código y anda bien Pero asegúrate de escribir todo el código completo
Código (dos) [Seleccionar]
@echo off
Cls
Set /p a=
If %a%==1 goto log
If %a%==2 goto exit

:log
Todo el comando que quieras que se ejecute con el 1

:exit
Todo el comando que quieras que se ejecute con el 2


Espero que te sirva

Enviado desde mi LG-H320 mediante Tapatalk

David8choceros8chounos

#5
Gracias :)  ;D ;D ;D
DE DAVID8CHOCEROS8CHOUNOS
para la 2 penultima persona que comento (Elektro)