2017-01-03 12 views
0

バッチゲームで変数を使用して色を変更するオプションを作成しようとしていますが、変更はありません。ここでは色付けに関連するすべてのコードがありますかなり長い)私は何か間違ったことをしましたか?バッチで色に問題がある

:colorchoice1 
cls 
color 8 
set /a %cChoice% = 0 
echo so, what color do you want? 
echo. 
echo 1) black (that'd make it pretty hard to see, huh?) 
echo 2) blue 
echo 3) green 
echo 4) aqua 
echo 5) red 
echo 6) purple 
echo 7) yellow 
echo 8) white 
echo 9) more options 

set /p cChoice= 
if %cChoice% == 1 color 0 
goto confirmcolor 
if %cChoice% == 2 color 1 
goto confirmcolor 
if %cChoice% == 3 color 2 
goto confirmcolor 
if %cChoice% == 4 color 3 
goto confirmcolor 
if %cChoice% == 5 color 4 
goto confirmcolor 
if %cChoice% == 6 color 5 
goto confirmcolor 
if %cChoice% == 7 color 6 
goto confirmcolor 
if %cChoice% == 8 color 7 
goto confirmcolor 
if %cChoice% == 9 goto colorchoice2 
goto colorchoice1 

:colorchoice2 
cls 
color 8 
set /a %cChoice% = 0 
echo so, what color do you want? 
echo. 
echo 10) grey (default) 
echo 11) light blue 
echo 12) light green 
echo 13) light aqua 
echo 14) light red (pink) 
echo 15) light purple 
echo 16) light yellow 
echo 17) bright white 
echo 18) back to other options 

問題は、あなたが複数行ifステートメントを使用していない

set /p cChoice= 
if %cChoice% == 10 color 8 
goto confirmcolor 
if %cChoice% == 11 color 9 
goto confirmcolor 
if %cChoice% == 12 color A 
goto confirmcolor 
if %cChoice% == 13 color B 
goto confirmcolor 
if %cChoice% == 14 color C 
goto confirmcolor 
if %cChoice% == 15 color D 
goto confirmcolor 
if %cChoice% == 16 color E 
goto confirmcolor 
if %cChoice% == 17 color F 
goto confirmcolor 
if %cChoice% == 18 goto colorchoice1 
goto colorchoice 2 

:confirmcolor 
cls 
echo are you sure this is the color you want? 
echo (remember, this cannot be changed later) 
echo. 
echo. 
echo 1) yes 
echo 2) no 

set /p confcolor= 
if %confcolor% == 1 goto name 
if %confcolor% == 2 goto colorchoice1 
goto confirmcolor 

答えて

2

この時点を過ぎてどこかにあるような気がします。今すぐ、チェックと同じ行にあるコマンドを実行するようにifに指示するだけです。そのため、goto confirmcolorコマンドがif %cChoice% == 1 color 0の下にある場合は、選択した内容にかかわらずが呼び出されます。

これを修正するには、2つの方法があります。

if %cChoice% == 1 (
    color 0 
    goto confirmcolor 
) 
if %cChoice% == 2 (
    color 1 
    goto confirmcolor 
) 

それとも、それは恐ろしく冗長なので、あなただけで1つの最後のチェックを持つことができます:あなたはこのようなマルチラインif文を作るために括弧を使用しますかすべての小切手の末尾は次のとおりです。

set /p cChoice= 
echo *%cChoice%* selected. 
if %cChoice% == 1 color 0 
if %cChoice% == 2 color 1 
if %cChoice% == 3 color 2 
if %cChoice% == 4 color 3 
if %cChoice% == 5 color 4 
if %cChoice% == 6 color 5 
if %cChoice% == 7 color 6 
if %cChoice% == 8 color 7 
if %cChoice% == 9 goto colorchoice2 
if %cChoice% lss 9 goto confirmcolor 
goto colorchoice1