Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 成批染色有问题吗_Batch File_Colors - Fatal编程技术网

Batch file 成批染色有问题吗

Batch file 成批染色有问题吗,batch-file,colors,Batch File,Colors,我正在尝试为我的批处理游戏设置一个选项,使用一个变量来改变颜色,但它没有改变,这是所有与颜色相关的编码,(注意,它很长,)我做错什么了吗 :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

我正在尝试为我的批处理游戏设置一个选项,使用一个变量来改变颜色,但它没有改变,这是所有与颜色相关的编码,(注意,它很长,)我做错什么了吗

: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
我觉得问题已经过去了

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

您没有使用多行
if
语句。现在,您只是告诉
if
运行与检查位于同一行的命令。因此,如果%cChoice%==1 color 0,则调用
下的
goto confirmcolor
命令,而不管选择了什么选项

有两种方法可以解决此问题:您可以使用括号生成多行
if
语句,如下所示:

if %cChoice% == 1 (
    color 0
    goto confirmcolor
)
if %cChoice% == 2 (
    color 1
    goto confirmcolor
)
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
或者,因为这是可怕的冗余,您可以在所有检查结束时进行最后一次检查,如下所示:

if %cChoice% == 1 (
    color 0
    goto confirmcolor
)
if %cChoice% == 2 (
    color 1
    goto confirmcolor
)
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

您没有使用多行
if
语句。现在,您只是告诉
if
运行与检查位于同一行的命令。因此,如果%cChoice%==1 color 0,则调用
下的
goto confirmcolor
命令,而不管选择了什么选项

有两种方法可以解决此问题:您可以使用括号生成多行
if
语句,如下所示:

if %cChoice% == 1 (
    color 0
    goto confirmcolor
)
if %cChoice% == 2 (
    color 1
    goto confirmcolor
)
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
或者,因为这是可怕的冗余,您可以在所有检查结束时进行最后一次检查,如下所示:

if %cChoice% == 1 (
    color 0
    goto confirmcolor
)
if %cChoice% == 2 (
    color 1
    goto confirmcolor
)
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