我正在尝试创建一个显示随机数字(类似于矩阵)几秒钟的脚本,然后它会变为红色并显示"错误" 我还没有找到If / then / else语句的正确语法。任何帮助将不胜感激
@echo off
color 02
:tricks
set /a counter +=1
echo %random%%random%%random%%random%%random%%random%
if %counter% > %random% * %random% * %random% * %random% * %random% * %random% + 15000 goto error
goto tricks
:error
color 04
:err
echo %error%
goto err
我知道
echo %random%%random%%random%%random%%random%%random%
有效,但其余的就是我遇到的麻烦。 我使用notepad ++来编写,我无法编译程序,因此我无法看到我所犯的错误,我只知道它不会运行。 -Much Obliged -
答案 0 :(得分:1)
你有几个问题。
在IF
语句中进行比较时,您必须使用带有GTR
标记的/I
(有关详细信息,请参阅if /?
):
if /i %counter% GTR [somevalue]
在上面," somevalue"必须是一个值,而不是一个计算。例如,您可能希望执行以下操作:
SET /A Target=%RANDOM% + 1500
if /i %counter% GTR %Target% goto error
但是,每次都会产生不同的比较,因此您可能希望稍微处理一下逻辑。
此外,当您打印"错误" (顺便打印无限打印)只需使用echo error
代替echo %error%
(不定义,只会说" ECHO关闭"一遍又一遍)。
如果您正在寻找另一种模拟矩阵的方法,那么下面的脚本就可以了。这完全不在您的问题范围内,但我只想提供一个可以做您想做的工作样本。
@ECHO OFF
SETLOCAL EnableExtensions EnableDelayedExpansion
COLOR 02
REM Generate 1500 random lines.
FOR /L %%A IN (1,1,1500) DO (
SET Giberish=
REM Generate 79 random numbers to ensure the desired length.
FOR /L %%X IN (1,1,79) DO SET Giberish=!Giberish!!RANDOM!
REM Trim to 79 chars.
REM Since the default console length is 80, 79 will fill the entire line without a break.
SET Giberish=!Giberish:~1,79!
ECHO !Giberish!
)
REM Print linebreaks to move the numbers off the screen.
FOR /L %%A IN (1,1,50) DO ECHO.
COLOR 04
ECHO Error
ENDLOCAL