批处理

时间:2015-09-14 01:06:34

标签: batch-file if-statement

我正在尝试创建一个显示随机数字(类似于矩阵)几秒钟的脚本,然后它会变为红色并显示"错误" 我还没有找到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 -

1 个答案:

答案 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