Foro de elhacker.net

Programación => Scripting => Mensaje iniciado por: Anastacio en 30 Junio 2014, 21:59 pm



Título: (Batch) Error "No se esperaba GOTO en este momento"
Publicado por: Anastacio en 30 Junio 2014, 21:59 pm
Hola a todos.

Estoy retomando la programacion en Batch desde la base, (la deje hace bastante tiempo), y seguramente estoy cometiendo un error elemental, ya que obtengo constantemente el Error No se esperaba Goto en este momento.

Dejo el codigo.

Código:
@echo off

echo What will you do today?
echo 1.Weather
set /p var1 = Choose

if %var1% == 1 goto one


:one
echo You have chosen 1
pause > nul

goto end:

:end
pause > nul


Gracias de antemano... Por cierto, busque bastante en Google, y me parece que es culpa de la declaracion de la variable var1... pero no estoy seguro.


Título: Re: (Batch) Error "No se esperaba GOTO en este momento"
Publicado por: Eleкtro en 30 Junio 2014, 22:20 pm
Por un lado la variable está mal como tu dices, estás dejando espacios entre el símbolo "=" cosa que en Batch..., y por otro lado también está mal la isntrucción del goto end:, que el simbolo se debe poner al principio.

Código
  1. set /p "var1=string"

Código
  1. goto :end

De todas formas te sugiero que lo hagas así:

Código
  1. @echo off
  2.  
  3. Echo What will you do today?
  4. Echo 1.Weather
  5.  
  6. Choice /C "12" /M "What will you do today?"
  7.  
  8. Call :%ErrorLevel%
  9. Goto :end
  10.  
  11. :1
  12. echo You have chosen 1
  13. Goto:EOF
  14.  
  15. :2
  16. echo You have chosen 2
  17.  
  18. :End

Saludos


Título: Re: (Batch) Error "No se esperaba GOTO en este momento"
Publicado por: Anastacio en 1 Julio 2014, 03:59 am
Elektro, muchas gracias por tu ayuda... es cierto, era solo eso :-)

Por cierto, intente usar tu codigo, y no me reconoce a Choice como funcion. Ademas, dice que la llamada a %errorlevel% desde call es inexistente, y la llama "9009". He leido sobre Choice y sobre Call. Entiendo lo de choice, permite al usuario elegir entre ciertos valores, en este caso 12, es decir 1 y 2.

http://en.wikipedia.org/wiki/Choice_(command)

Por lo que aqui muestra en un ejemplo, Choice deberia llevar "@" al principio, y un ":" antes de los valores a elegir. Aun asi, probe con esos cambios, y nada, sigue diciendo  lo mismo.

Pero, si fuese un problema de sintaxis de la funcion me daria otro mensaje de error. En este caso, no reconoce la funcion, es como si colocase una funcion no existente en DOS...

Muchas gracias de antemano :-)



Título: Re: (Batch) Error "No se esperaba GOTO en este momento"
Publicado por: Eleкtro en 1 Julio 2014, 04:39 am
Hola

1. Anda que buscar documentación de Batch en la wikipedia..., puedes acceder a la ayuda de cualquier comando, escribiendo el parámetro de ayuda:
Código:
Choice.exe /?

2. El símbolo de la arroba (@) está relacionado al "echo" del comando (es innecesario), nada tiene que ver, y lo de los dos puntos ( : ) simplemente es otra forma aceptable de sintaxis.


El error te indica que no se encuentra el comando (el archivo c:\windows\system32\choice.exe), es decir, que no existe en tu equipo, ahora, ¿porque motivo?, por estar usando un windows modificado con componentes capados, por tener "rota" la configuración de la variable de entorno PATH, o vete a saber, comprueba manualmente si tienes dicho archivo en "...\system32\" y si no lo tienes pues nada, a usar "Set /P" :P .

Nota: La sintaxis de uso del comando CHOICE difiere un poco de WinXP a Windows 7/8.

Saludos