楼 主
隐晦的set 3=10变量引用
发表于 2008-11-24 20:18 · 中国 天津 联通
初级用户
★
积分 24
发帖 11
注册 2008-11-22 21:08
17年会员
UID 131788
性别 男
状态 离线
引用变量的方法大家应该耳熟能详了吧
set a=10
引用a的方法就是用%%
echo %a%
但是现在有个非典型例子,set 3=10,大家试试看?
echo %3%?
错!
echo %%3%%?
再错!
...
这回被惯性思维绊倒了吧?
答案是:
setlocal EnableDelayedExpansion
echo !3!
10!
呵呵,set不禁止用数字当作变量名,但引用起来就费点手指功夫多敲几个键啦

其实还真没有人想会用数字来作变量名

(台下:小子,你找抽!)

好啦好啦,解释一下为什么echo %3%会错,原因是批处理对于数字敏感,%3%会优先作为%3考虑,因此在批处理中,数字扩展肯定是参数,而在命令行中,由于没有所谓的参数,数字扩展肯定是变量~呵呵
第 2 楼
发表于 2008-11-24 22:06 · 中国 北京 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
其实还真没有人想会用数字来作变量名
我原来用用负数作“变量名”的方法写过一个加密批处理的东东:)
第 3 楼
发表于 2008-11-24 23:35 · 中国 广东 广州 增城区 电信
中级用户
★★
积分 209
发帖 82
注册 2006-03-22 00:18
20年会员
UID 52554
状态 离线
第 4 楼
发表于 2008-11-25 01:45 · 中国 山东 淄博 联通
银牌会员
★★★
积分 1,604
发帖 646
注册 2008-04-13 23:39
18年会员
UID 115804
性别 男
状态 离线
被当作参数解释了吧~
%3%误解析成%3了~
心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
第 5 楼
发表于 2008-11-25 19:33 · 中国 北京 海淀区 联通
银牌会员
★★★
积分 1,287
发帖 634
注册 2007-05-02 15:06
19年会员
UID 87277
性别 男
来自 cmd.exe
状态 离线
第 6 楼
发表于 2008-12-01 21:28 · 中国 贵州 黔南布依族苗族自治州 都匀市 电信
初级用户
★
积分 20
发帖 17
注册 2008-09-07 13:21
17年会员
UID 125036
性别 男
状态 离线
Originally posted by maky1117 at 2008-11-24 08:18 PM:
引用变量的方法大家应该耳熟能详了吧
set a=10
引用a的方法就是用%%
echo %a%
但是现在有个非典型例子,set 3=10,大家试试看?
echo %3%?
错!
echo %% ...
为什么我的就可以?

处于,并长期处于潜水状态
第 7 楼
发表于 2008-12-01 21:47 · 中国 北京 海淀区 联通
银牌会员
★★★
积分 2,098
发帖 566
注册 2007-09-11 07:27
18年会员
UID 97070
性别 男
状态 离线
论坛跳转: