2015-09-14 160 views
0

我试图让脚本显示随机数字(类似于矩阵)几秒钟,然后它变成红色并显示“错误” 我还没有找到正确的语法一个If/then/else语句。任何帮助,将不胜感激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% 

的作品,但在那之后剩下的就是我遇到什么麻烦。 我用记事本+ +写,我没有办法编译程序,所以我不能看到我犯了什么错误,我只知道它不会运行。 -Much Obliged-

+0

批处理文件不编译,它们被解释。你正在运行批处理文件,对吗?你应该得到一个错误。对于语法,查看'if /?'的输出 – Blorgbeard

+1

尝试'if%counter%GRT ...'而不是'if%counter%> ...' – UnknownOctopus

+0

@Blorgbeard没有给出错误消息,它只是打开命令提示然后在不到半秒的时间内关闭它。不,你的解决方案不起作用。 – Prophet

回答

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 
+0

我更喜欢你的版本。我修改了“错误...进入格式化模式”的地方,然后重做乱码,然后说“恶意软件安装完成...重新启动...”,然后重新启动计算机。 – Prophet

+0

'/ I'选项与数字值的比较无关紧要,因为它只是以不区分大小写的方式来处理字符串... – aschipfl

+0

@Prophet - 如果这回答了您的问题,请将此帖标记为答案以关闭线。干杯。 –

0

这里是一个稍微有点矩阵式的批处理文件,我修改了一个错误屏幕。这将只回显0,1's

:: Matrix style batch file 
@ECHO OFF 
@BREAK OFF 
:: Number of times to run matrix before error 
SET Rotations=75 
:: Number of times to flash error 
SET ErrorTimes=5 
:Matrix 
COLOR 02 
SET /A A=%random%*2/32767 
SET /A B=%random%*2/32767 
SET /A C=%random%*2/32767 
SET /A D=%random%*2/32767 
SET /A E=%random%*2/32767 
SET /A F=%random%*2/32767 
SET /A G=%random%*2/32767 
SET /A H=%random%*2/32767 
SET /A I=%random%*2/32767 
SET /A J=%random%*2/32767 
SET /A K=%random%*2/32767 
SET /A L=%random%*2/32767 
SET /A M=%random%*2/32767 
SET /A N=%random%*2/32767 
SET /A O=%random%*2/32767 
SET /A P=%random%*2/32767 
SET /A Q=%random%*2/32767 
SET /A R=%random%*2/32767 
SET /A S=%random%*2/32767 
SET /A T=%random%*2/32767 
SET /A U=%random%*2/32767 
SET /A V=%random%*2/32767 
SET /A W=%random%*2/32767 
SET /A X=%random%*2/32767 
SET /A Y=%random%*2/32767 
SET /A Z=%random%*2/32767 
ECHO %A%%D%%C%%B%%B%%F%%A%%E%%F%%G%%H%%C%%Z%%X%%Y%%F%%E%%R%%B%%M%%Z%%P%%K%%U%%I%%G%%S%%A%%D%%L%%O%%P%%W%%T%%Y%%B%%N%%F%%U%%S%%P%%S%%T%%U%%G%%H%%S%%L%%R%%S%%Q%%W%%E%%R%%T%%V%%B%%N%%O%%U%%I%%L%%P%%S%%F%%E%%C%%X%%Z%%B%%H%%R%%U%%L%%O%%M%%E%%E%%S% 
SET /A Matrix+=1 
IF %Matrix% LEQ %Rotations% GOTO :Matrix 
SET Matrix=0 
GOTO :Error 

:Error 
CLS 
COLOR 04 
ECHO oooooooooooo ooooooooo. ooooooooo.  .oooooo. ooooooooo. 
ECHO `888'  `8 `888 `Y88. `888 `Y88. d8P' `Y8b `888 `Y88. 
ECHO 888   888 .d88' 888 .d88' 888  888 888 .d88' 
ECHO 888oooo8  888ooo88P' 888ooo88P' 888  888 888ooo88P' 
ECHO 888 "  888`88b.  888`88b. 888  888 888`88b. 
ECHO 888  o 888 `88b. 888 `88b. `88b d88' 888 `88b. 
ECHO o888ooooood8 o888o o888o o888o o888o `Y8bood8P' o888o o888o 
TIMEOUT /T 1 /NOBREAK>NUL 
CLS 
ECHO. 
ECHO. 
ECHO. 
ECHO. 
ECHO. 
ECHO. 
ECHO. 
TIMEOUT /T 1 /NOBREAK>NUL 
CLS 
SET /A Error+=1 
IF %Error% LEQ %ErrorTimes% GOTO :Error 
SET Error=0 
GOTO :Matrix