标题:
隐晦的set 3=10变量引用
[打印本页]
作者:
maky1117
时间:
2008-11-24 20:18
标题:
隐晦的set 3=10变量引用
引用变量的方法大家应该耳熟能详了吧
set a=10
引用a的方法就是用%%
echo %a%
但是现在有个非典型例子,set 3=10,大家试试看?
echo %3%?
错!
echo %%3%%?
再错!
...
这回被惯性思维绊倒了吧?
答案是:
setlocal EnableDelayedExpansion
echo !3!
10!
呵呵,set不禁止用数字当作变量名,但引用起来就费点手指功夫多敲几个键啦
其实还真没有人想会用数字来作变量名
(台下:小子,你找抽!)
好啦好啦,解释一下为什么echo %3%会错,原因是批处理对于数字敏感,%3%会优先作为%3考虑,因此在批处理中,数字扩展肯定是参数,而在命令行中,由于没有所谓的参数,数字扩展肯定是变量~呵呵
作者:
s11ss
时间:
2008-11-24 22:06
Quote:
其实还真没有人想会用数字来作变量名
我原来用用负数作“变量名”的方法写过一个加密批处理的东东:)
作者:
ITU
时间:
2008-11-24 23:35
那么,在纯DOS下呢?
作者:
pusofalse
时间:
2008-11-25 01:45
被当作参数解释了吧~
%3%误解析成%3了~
作者:
knoppix7
时间:
2008-11-25 19:33
某些编程语言带来的思维...变量名不能纯数字..
作者:
luxipeng
时间:
2008-12-1 21:28
Quote:
Originally posted by
maky1117
at 2008-11-24 08:18 PM:
引用变量的方法大家应该耳熟能详了吧
set a=10
引用a的方法就是用%%
echo %a%
但是现在有个非典型例子,set 3=10,大家试试看?
echo %3%?
错!
echo %% ...
为什么我的就可以?
作者:
s11ss
时间:
2008-12-1 21:47
在批处理中
欢迎光临 中国DOS联盟论坛 (http://cndos.fam.cx/forum/)
Powered by Discuz! 2.5