中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-12 12:30
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,256 会员排行
DOS批处理 & 脚本技术(批处理室) » 环境变量延迟问题
可打印版本  749 / 3
第1楼 btpg 发表于 2010-04-11 15:45
新手上路 发帖 19 积分 17 来自 湖北
环境变量延迟问题
@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 ]
第2楼 btpg 发表于 2010-04-11 16:01
新手上路 发帖 19 积分 17 来自 湖北
已经搞清楚了,原来是

这句出了问题,改成:

就成了

还是要多练习呀!!

[ Last edited by btpg on 2010-4-11 at 16:42 ]
第3楼 btpg 发表于 2010-04-11 16:32
新手上路 发帖 19 积分 17 来自 湖北

呃……,貌似这样也可以呵…………

好像不是变量延迟的问题………………

呃呵…………呵
第4楼 Hanyeguxing 发表于 2010-04-11 19:19
银牌会员 发帖 897 积分 1,039 来自 在地狱中仰望天堂
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:

呃……,貌似这样也可以呵 ...

本版内搜索关键词“预处理”和“变量延迟”

这个也可以这样写:
这里的set/a a=a*3实际就是set/a a=%a%*3




这里的set/a a=a*3实际就是set/a a=!a!*3

[ Last edited by Hanyeguxing on 2010-4-11 at 19:31 ]
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023