为什么我改变颜色的程序不起作用?批量

-1 batch-file

我试图制作一个改变颜色的程序,但它只是不起作用.我按任意按钮,它不会改变,然后关闭.我不知道为什么会这样做

@echo off
set letter2=0
:1
set color=%random%
if %color% LSS 10 goto next
goto 1
:next
set letter=%random%
if %random% LSS 6 goto 2
:2 
if %letter% == 0 goto A
if %letter% == 1 goto B
if %letter% == 2 goto C
if %letter% == 3 goto D
if %letter% == 4 goto E
if %letter% == 5 goto F
goto next
:a
set %letterr2% == a
goto final
:b
set %letterr2% == b
goto final
:c
set %letterr2% == c
goto final
:d
set %letterr2% == d
goto final
:e
set %letterr2% == e
goto final
:f
set %letterr2% == f
:final
set realcolor=%letter2%+%color%
cls
color %realcolor%
echo hey this color is %color%
pause>nul
goto 1
Run Code Online (Sandbox Code Playgroud)

Som*_*ark 5

这里有几件事情要发生.

最大的问题是,你的set陈述:a通过:f是完全错误的.

  • 编写set语句时,只使用一个=符号.
  • 当你说set %letter2%=c,你没有将letter2的值设置为c时,你说的是"设置letter2的值为 c 的值."
  • 删除=符号两侧的空格; batch允许空格成为变量名的一部分,因此您创建了一个名为的变量%letterr2 %并将其值设置为c.
  • 你做了一个拼写错误并称为变量%letter r 2%而不是%letter2%.

你不需要一个+字符串连接,只需将两个变量放在一起.

您的脚本将永远运行,因为%random%返回1到32768之间的数字.它低于10的几率是微不足道的.它低于6的几率甚至更小.如果需要1到n之间的随机数,请使用代码set /a number=%random% %% n.

最终,您的代码看起来像这样:

@echo off
set letter2=0
:1
set /a color=%random%%%10
set /a letter=%random%%%6

if %letter% == 0 goto A
if %letter% == 1 goto B
if %letter% == 2 goto C
if %letter% == 3 goto D
if %letter% == 4 goto E
if %letter% == 5 goto F

:a
set letter2=a
goto final
:b
set letter2=b
goto final
:c
set letter2=c
goto final
:d
set letter2=d
goto final
:e
set letter2=e
goto final
:f
set letter2=f
:final
set realcolor=%letter2%%color%
cls
color %realcolor%
echo hey this color is %color%
pause>nul
goto 1
Run Code Online (Sandbox Code Playgroud)