2016-07-06 8 views
-4

tun Ich habe eine andere Frage ähnlich meiner hier gesehen. Die Antwort war, das Zeichen & zu verwenden, um beide Befehle in einer Zeile auszuführen. Aber das war für zwei verschiedene Befehle, die zwei Befehle, die ich versuche, sind goto und echo. Wie man 2 Befehle zur gleichen Zeit mit Batch

Wenn ich versuche, ein Putting & Zeichen nach dem, was ich will echo, denkt es, dass ich die & Zeichen echo wollen. Also dann versuche ich und setze das & Zeichen nach der goto EXAMPLETEXT und es glaubt, dass ich an einen Ort in meiner Batch-Datei namens EXAMPLETEXT & gehen möchte. Die Befehle wissen nicht, wann sie von ihrem Befehl zum nächsten abweichen müssen.

Wenn Sie wissen wollen, was Zusammenhang ich dies mit für oder warum ich diese verwenden müssen, ist der Grund ist, dass ich eine Frage habe zu fragen, set /p answer=Are you ready to begin?: ich dann haben, if %answer% == Ready goto begin und if %answer == Not ready goto NOTREADY und if %answer% == yes goto begin und so weiter.

Dann am Ende aller angegebenen Antwortmöglichkeiten akzeptabel, möchte ich setzen, if not defined %answer% echo Not an acceptable answer & goto READYTOBEGIN? (sendet zurück auf die Frage, so dass sie erneut beantworten können.) Aber natürlich wegen der angegebenen Gründe, die nicht funktionieren wird mich.

+1

Warum es unbedingt müssen auf einer Linie sein? Wenn Sie Klammern verwenden, können Sie beide Befehle in einem Codeblock haben und müssen sich nicht um & kümmern. – SomethingDark

Antwort

0

Mit if exist die VARIABLEN verwenden, nicht die Variable selbst (kein %)

Ihre Linie

if not defined %answer% echo Not an acceptable answer & goto READYTOBEGIN? 

wird analysiert (weil %answer% leer ist) als:

if not defined echo Not an acceptable answer & goto READYTOBEGIN? 

echo ist auch nicht definiert (wahrscheinlich), so ist der auszuführende Befehl Not - was lea ds zu einem Fehler "Befehl nicht gefunden".
Wenn es ist definiert ist, gibt es keinen Fehler, aber das ist nicht viel besser. Nehmen wir an, trat der Benutzer hello, dann wird die Linie analysiert als:

if not defined hello echo Not an acceptable answer & goto READYTOBEGIN? 

Die Variable hello wird wahrscheinlich nicht definiert, aber es könnte sein - so dass Sie ein unvorhersehbares Verhalten.

Die korrekte Syntax für Ihre Linie wäre:

if not defined answer echo Not an acceptable answer & goto READYTOBEGIN? 

Was tun Sie, wenn der Benutzer qwertzui zum Beispiel tritt? answer ist definiert, so dass echo und goto ignoriert werden. Besser lassen Sie den letzten if ganz herunter und ersetzen Sie die Zeile mit nur:

echo Not an acceptable answer & goto READYTOBEGIN? 

so feuert es, wenn answer entweder nicht definiert oder nicht mit dem vorherigen if s catched erhalten