2016-05-04 11 views
0

EDIT: Ich habe das Problem herausgefunden. Meine Eingabevariablen und 'If'-Variablen waren unterschiedlich. Ich habe vergessen, eine davon zu ändern, nachdem ich sie geändert habe."Wenn" Anweisung mit "Goto" Fehler

So habe ich Probleme mit meinem Code.

Fehler;

"goto installupdate" was unexpected at this time 

Es funktioniert alles bis zum

if %updatech%==Y goto iu 
if %updatech%==y goto iu 
if %updatech%==N goto noupdate 
if %updatech%==n goto noupdate 

Und ich bin nicht sicher, was ich falsch mache. Hat jemand eine Idee, was in meinem Code schief läuft?

Code:

REM Prüfen für ein Update für den Installateur

:updatecheck 
bitsadmin.exe /transfer "updatecheck" "http://serverse.playat.ch/overtone/update.txt" "%temp%\overtoneupdate.txt" 
set /p versioncompare=<"%temp%\overtoneupdate.txt" 
del "%temp%\overtoneupdate.txt" 
cls 
if %currentbuild% == %versioncompare% goto noupdate 
set /p updateyn=New version found! Would you like to update? [Y/N]: 
if %updatech%==Y goto iu 
if %updatech%==y goto iu 
if %updatech%==N goto noupdate 
if %updatech%==n goto noupdate 
goto updatecheck 

:iu 
bitsadmin.exe /transfer "update" "http://serverse.playat.ch/overtone/%versioncompare%update.bat" "%cd%\update.bat" 
echo %versioncompare%>upvers.txt 
update.bat 
exit 

:noupdate 
cls 
goto install 
+0

Ich habe die Lösung gepostet (die Sie bereits von den Klängen gefunden haben), aber ich habe auch eine zusätzliche Notiz hinzugefügt, da Ihr Code gerade bricht, wenn jemand nur die Eingabetaste drückt, wenn Sie aufgefordert werden sie über die neue Version. –

+1

'if /?'. Sehen Sie sich den Parameter '/ i' an, um Ihren Code zu verkürzen. Vielleicht interessiert Sie auch der 'choice' Befehl. – Stephan

Antwort

0

Im folgenden Codezeile, werden Sie eine Variable Einstellung namens updateyn, sondern eine Variable Überprüfung genannt updatech.

set /p updateyn=New version found! Would you like to update? [Y/N]: 
if %updatech%==Y goto iu 

Dies ist immer leer, so ist es nicht, wie es

hinausläuft,
if ==Y goto iu 

, die nicht gültige Syntax ist.

Neben der Festlegung des Variablennamens sollten Sie auch den Fall berücksichtigen, bei dem der Benutzer nur die Eingabetaste drückt (was das gleiche Problem verursacht).

Sie arbeiten um, dass durch eine bekannte Schnur um die Variable

if x%updateyn%x==xYx goto iu 

zum Beispiel setzen.

+0

Alrighty, vielen Dank! – Asher

+2

Es ist üblich, Anführungszeichen um den Variablennamen und den Wert anstelle von 'x' zu verwenden. Auf diese Weise werden Sonderzeichen erhalten. – SomethingDark

+0

Können Zitate keine Probleme verursachen, zum Beispiel wenn Sie einen zitierten Pfad haben? –