(Batch) Error "No se esperaba GOTO en este momento"

Iniciado por Anastacio, 30 Junio 2014, 21:59 PM

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

Anastacio

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.


@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.
You, stop to close my post, you were novice too!!!!!!!!!!!!

Eleкtro

#1
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 (dos) [Seleccionar]
set /p "var1=string"

Código (dos) [Seleccionar]
goto :end

De todas formas te sugiero que lo hagas así:

Código (dos) [Seleccionar]
@echo off

Echo What will you do today?
Echo 1.Weather
Echo 2.Exit

Choice /C "12" /M "What will you do today?"

Call :%ErrorLevel%
Goto :end

:1
echo You have chosen 1
pause 1>nul
Goto:EOF

:2
echo You have chosen 2
pause 1>nul
Exit

:End
pause 1>nul
Exit


Saludos








Anastacio

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 :-)

You, stop to close my post, you were novice too!!!!!!!!!!!!

Eleкtro

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:
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