Command Prompt for Windows




DO, WHILE and UNTIL Examples

Example 1:

Consider the following batch file, which calculates all the prime numbers from 2 to 1,000 using the fast Sieve of Eratosthenes algorithm :-

@ECHO off
REM
REM Calculate all the prime numbers 
REM from 2 to count, using the fast
REM Sieve of Eratosthenes algorithm
REM

SETLOCAL
ECHO Initalising...
SET count=1000
FOR i is 2 TO %count% DO {
    SET arr.i=1
}

ECHO Calculating prime numbers...
SET basecount=1
LET countlimit=int(sqr(count))
WHILE (basecount < countlimit) DO {
    DO {
        LET basecount=basecount + 1
        IF (basecount==count) GOTO done
    } WHILE (!arr.basecount)
    LET counter=(basecount << 1)
    WHILE (counter < count) DO {
        SET arr.counter=0
        LET counter=counter+basecount
    }
}
:done
ECHO.
ECHO Prime numbers:
SET j=0
LET count=count - 1
FOR i is 0 to %count% DO {
    IF (arr.i==1) {
        LET j=j + 1
        IF ((J % 10)==0) ECHO.
        SAY %i%, 
    }
}
ENDLOCAL
ECHO.

Note: that in the WHILE expression the environment variables do not include the surrounding %s. See command CALC for more information.

This batch file displays :-

Initalising...
Calculating prime numbers...
 
Prime numbers:
2,  3,  5,  7,  11,  13,  17,  19,  23,
29,  31,  37,  41,  43,  47,  53,  59,  61,  67,
71,  73,  79,  83,  89,  97,  101,  103,  107,  109,
113,  127,  131,  137,  139,  149,  151,  157,  163,  167,
173,  179,  181,  191,  193,  197,  199,  211,  223,  227,
229,  233,  239,  241,  251,  257,  263,  269,  271,  277,
281,  283,  293,  307,  311,  313,  317,  331,  337,  347,
349,  353,  359,  367,  373,  379,  383,  389,  397,  401,
409,  419,  421,  431,  433,  439,  443,  449,  457,  461,
463,  467,  479,  487,  491,  499,  503,  509,  521,  523,
541,  547,  557,  563,  569,  571,  577,  587,  593,  599,
601,  607,  613,  617,  619,  631,  641,  643,  647,  653,
659,  661,  673,  677,  683,  691,  701,  709,  719,  727,
733,  739,  743,  751,  757,  761,  769,  773,  787,  797,
809,  811,  821,  823,  827,  829,  839,  853,  857,  859,
863,  877,  881,  883,  887,  907,  911,  919,  929,  937,
941,  947,  953,  967,  971,  977,  983,  991,  997,