Originally posted by btpg at 2010-4-11 15:45:
@echo off&color a
setlocal enabledelayedexpansion
set /a a=1,b=1
:begin
set /a a=!a!*3
echo 3的!b!次方等于:!a!
set /a b=!b!+1
if b leq 10 goto :begin
pause
看上去没什么问 ...
if b leq 10 goto :begin在这里b是字符,不是变量,因为没用%或!括起来,字符b永远大于数字10,所以goto :begin永远不会执行。
Originally posted by btpg at 2010-4-11 16:32:
@echo off&color a
set /a a=1,b=1
:begin
set /a a=%a%*3
echo 3的%b%次方等于:%a%
set /a b=%b%+1
if %b% leq 10 goto :begin
pause
呃……,貌似这样也可以呵 ...
本版内搜索关键词“预处理”和“变量延迟”
这个也可以这样写:
@echo off&color a
set/a a=1,b=1
:begin
set/a a=a*3
echo 3的%b%次方等于:%a%
set/a b=b+1
if %b% leq 10 goto :begin
pause
这里的set/a a=a*3实际就是set/a a=%a%*3
或
@echo off&setlocal enabledelayedexpansion
color a&set a=1
for /l %%i in (1 1 10) do set/a a=a*3&echo 3的%%i次方等于:!a!
pause
这里的set/a a=a*3实际就是set/a a=!a!*3
Last edited by Hanyeguxing on 2010-4-11 at 19:31 ]