标题: 环境变量延迟问题
[打印本页]
作者: btpg
时间: 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
看上去没什么问题呀?为什么不行呢?
[
Last edited by btpg on 2010-4-11 at 15:46 ]
作者: btpg
时间: 2010-4-11 16:01
已经搞清楚了,原来是
if b leq 10 goto :begin
这句出了问题,改成:
if !b! leq 10 goto :begin
就成了
还是要多练习呀!!
[
Last edited by btpg on 2010-4-11 at 16:42 ]
作者: btpg
时间: 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
呃……,貌似这样也可以呵…………
好像不是变量延迟的问题………………
呃呵…………呵
作者: Hanyeguxing
时间: 2010-4-11 19:19
Quote: |
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永远不会执行。
Quote: |
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 ]