4 Stimmen

Goto war zu diesem Zeitpunkt unerwartet - batch

Ich versuche, ein textbasiertes Batch-Spiel zu erstellen. Aber ich stieß auf ein Problem, als ich gerade anfing es zu schreiben, das ich noch nie zuvor erlebt habe.

:menu
:: das Spielmenü - öffnet sich, wenn das Spiel startet
cls
echo Dieses Spiel wird noch erstellt - experimentell
echo Startbildschirm:
echo [1] Änderungen anzeigen
echo [2] Spiel starten
echo Gib deine Auswahl ein:
set /p startchoice =
if %startchoice%==1 goto changes
if %startchoice%==2 goto startgame

Wenn ich entweder 1 oder 2 eingebe, zeigt es den Fehler "goto wurde zu dieser Zeit unerwartet" Warum und wie kann ich es beheben?

8voto

Ken White Punkte 120217

Dein startchoice wird nicht korrekt gesetzt. Verwende die alternative Syntax für set /p, bei der du dort die Eingabeaufforderung angibst (und den Leerzeichen zwischen startchoice und dem Zuweisungsoperator (=) entfernst - ich glaube, das ist tatsächlich die Ursache des Problems, aber du kannst deine Batchdatei um eine Zeile verkürzen, wenn du die Syntax set /p = verwendest).

Ich habe zwei Ziele für die goto- und echo-Anweisungen hinzugefügt, damit du sehen kannst, dass sie erreicht wurden:

:menu
:: das Spielmenü - öffnet sich, wenn das Spiel startet
cls
echo Dieses Spiel wird noch gemacht - experimentell
echo Startbildschirm:
echo [1] Änderungen anzeigen
echo [2] Spiel starten
set /p startchoice=Gib deine Wahl ein:

if %startchoice%==1 goto changes
if %startchoice%==2 goto startgame
:changes
echo Änderungen
goto end
:startgame
echo Spiel starten
:end

6voto

PeterJ Punkte 3516

Sie benötigen Anführungszeichen um den Vergleich in if und es hat Ihnen nicht gefallen, dass Sie set /p ohne eine Eingabeaufforderung verwendet haben. Das Folgende funktioniert:

:menu
:: das Spielmenü - öffnet sich, wenn das Spiel startet
cls
echo Dieses Spiel wird noch hergestellt -- experimental
echo Startbildschirm:
echo [1] Änderungen anzeigen
echo [2] Spiel starten
set /p startchoice = "geben Sie Ihre Auswahl ein: "
if "%startchoice%"=="1" goto changes
if "%startchoice%"=="2" goto startgame

0voto

Osmium USA Punkte 1713

Statt Umgebungsvariablen zu verwenden, versuchen Sie dies:

CHOICE
IF %ERRORLEVEL% EQU 1 goto changes
IF %ERRORLEVEL% EQU 2 goto startgame

Choice ist ein Programm, das es Ihnen ermöglicht, eine Zahl oder j/n einzugeben und einen Fehlercode zurückgibt. %ERRORLEVEL% ist eine Variable, die den letzten Fehlercode des Programms enthält.

Sie können auch andere Vergleiche durchführen.

EQU - gleich
NEQ - ungleich
LSS - kleiner als
LEQ - kleiner als oder gleich
GTR - größer als
GEQ - größer als oder gleich

-1voto

Dane Wright Punkte 1

Ein weiterer Grund, warum es fehlerhaft sein könnte, ist, dass Sie die SET /P M= Variable nicht korrekt eingegeben haben ... Es darf kein Leerzeichen zwischen dem m und dem Gleichheitszeichen sein.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X