2016-05-04 9 views
0

EDIT:問題を見つけました。私の入力変数と 'If'変数が異なっていたので、変更した後にその変数の1つを変更するのを忘れました。"goto"エラーのある "If"文

私のコードに問題があります。

エラー。

"goto installupdate" was unexpected at this time 

それはすべて

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

まで動作し、私は私が間違ってやっているかわからないんだけど。誰でも私のコードで何がうまくいかないのか考えていますか?

コード:次のコード行で

: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

私はすでにあなたがその音から見つけた解決策を投稿しましたが、プロンプトが表示されたら誰かがEnterキーを押しただけでコードが破損するため、余分なメモを追加しましたそれらの新しいバージョンについて。 –

+1

'if /?'あなたのコードを短縮するために '/ i'パラメータを見てください。また、 'choice'コマンドに興味があるかもしれません。 – Stephan

答えて

0

インストーラへの更新のための

REMチェック、あなたはupdateynという変数を設定することが、updatechという変数をチェックしています。

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

それは有効な構文ではありません

if ==Y goto iu 

に要約として、これは常に空であるので、それは失敗します。

変数名を修正するだけでなく、ユーザーがEnterキーを押すだけで同じ問題が発生する場合も考慮する必要があります。

あなたは、例えば、可変

if x%updateyn%x==xYx goto iu 

の周りに知られている文字列を置くことによって、その回避することができます。

+0

ありがとう、ありがとう! – Asher

+2

'x'の代わりに変数名と値の両方を引用符で囲むのが標準的な方法です。このようにして、特殊文字は保存されます。 – SomethingDark

+0

引用符で囲まれていない場合、引用符で囲むことはできません。 –