2015-09-14 127 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