@echo off
rem pause
set /a x=1
set /a n=0
set /p x_end=x ^(End^)=
rem ensure %x_end% will result to a number
set /a "x_end=x_end"
:loop
echo cls
set /a n=n+1
set /a x=x+n+1
set /a students=n+2
echo x=%x%, n=%n%, x ^(End^)=%x_end%
rem pause >nul
if %x% GTR %x_end% goto end
goto loop
:end
echo Answer: x ^(End^)=%x%, Students=%students%, n ^(end^)=%n%
echo(
echo Click Anything To Exit...
pause > nul
rem exit
Existem as próximas melhorias no snippet de código acima:
- meramente para fins de depuração
- algum
rem
(inicialpause
, finalexit
); -
echo cls
em vez decls
;
- algum
- importante
-
set /a "x_end=x_end"
para garantir que%x_end%
resultará em um número para qualquer entrada do usuário; -
if
sintaxe válida : useGTR
(& gt ;, maior que) ouGEQ
(> =, maior que ou igual); - por causa do parênteses com significado especial no script em lote , todas abrindo
(
e fechando)
são < href="http://ss64.com/nt/syntax-esc.html"> escapou em todas as ocorrências em que elas deveriam ser usadas literalmente (echo
eset /p
). Tentarif 1==1 (echo (inner) parentheses)
mostrará que isso pode ser importante. Embora isso não importe no trecho de código dado , vale a pena como uma questão de princípio geral.
-