Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: David8choceros8chounos en 1 Marzo 2017, 18:21 pm



Título: Me dice (No se esperaba goto en este momento)(Solucionado)
Publicado por: David8choceros8chounos en 1 Marzo 2017, 18:21 pm
Código
  1. set /p a =
  2.  
  3. if %a%==1 goto log
  4. if %a%==2 goto exit
  5.  
Me podrian ayudar ?  :(                                  ;D les agradeceria mucho que me dijieran plis  :-*  
Gracias si me leiste
   XD      
Citar
De Mi...
Y esto esta en .bat eh? las etiquetas aunque no esten no importa.


Título: Re: Me dice (No se esperaba goto en este momento
Publicado por: Orubatosu en 1 Marzo 2017, 18:30 pm
Deberías pedir que lo muevan a batch, porque esto es código de consola DOS ¿no?


Título: Re Re: Me dice (No se esperaba goto en este momento
Publicado por: David8choceros8chounos en 1 Marzo 2017, 19:44 pm
Esta en batch  :-\ como se solusiona


Título: Re: Me dice (No se esperaba goto en este momento
Publicado por: Eleкtro en 2 Marzo 2017, 00:31 am
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
  1. @Echo OFF
  2.  
  3. SET /P "var="
  4. If "%var%" EQU "1" (GoTo :Log)
  5. If "%var%" EQU "2" (GoTo :Exit)
  6.  
  7. :Log
  8. REM ...
  9.  
  10. 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!


Título: Re: Re: Re: Me dice (No se esperaba goto en este momento
Publicado por: Hitman062 en 2 Marzo 2017, 07:11 am
Hola amigo, lo probé al código y anda bien Pero asegúrate de escribir todo el código completo
Código
  1. @echo off
  2. Cls
  3. Set /p a=
  4. If %a%==1 goto log
  5. If %a%==2 goto exit
  6.  
  7. :log
  8. Todo el comando que quieras que se ejecute con el 1
  9.  
  10. Todo el comando que quieras que se ejecute con el 2

Espero que te sirva

Enviado desde mi LG-H320 mediante Tapatalk


Título: Re: Me dice (No se esperaba goto en este momento
Publicado por: David8choceros8chounos en 2 Marzo 2017, 18:29 pm
Gracias :)  ;D ;D ;D
DE DAVID8CHOCEROS8CHOUNOS
para la 2 penultima persona que comento (Elektro)