中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net  论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 隐晦的set 3=10变量引用 上一主题 | 下一主题
maky1117
初级用户





积分 24
发帖 11
注册 2008-11-22
状态 离线
『楼 主』:  隐晦的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考虑,因此在批处理中,数字扩展肯定是参数,而在命令行中,由于没有所谓的参数,数字扩展肯定是变量~呵呵

   此帖被 +7 点积分      点击查看详情   
评分人:【 tireless 分数: +3  时间:2008-11-24 20:37
评分人:【 balinger 分数: +4  时间:2008-11-24 22:09


2008-11-24 20:18
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 2 楼』:  



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

我原来用用负数作“变量名”的方法写过一个加密批处理的东东:)

   此帖被 +4 点积分        点击查看详情   
评分人:【 balinger 分数: +4  时间:2008-11-24 22:08


2008-11-24 22:06
查看资料  发短消息 网志   编辑帖子  回复  引用回复
ITU
中级用户





积分 209
发帖 82
注册 2006-3-22
状态 离线
『第 3 楼』:  

那么,在纯DOS下呢?

2008-11-24 23:35
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
pusofalse
银牌会员




积分 1604
发帖 646
注册 2008-4-13
状态 离线
『第 4 楼』:  

被当作参数解释了吧~

%3%误解析成%3了~



心绪平和,眼藏静谧,无比安稳的火... Purification of soul...Just a false...^_^
2008-11-25 01:45
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
knoppix7
银牌会员





积分 1287
发帖 634
注册 2007-5-2
来自 cmd.exe
状态 离线
『第 5 楼』:  

某些编程语言带来的思维...变量名不能纯数字..

2008-11-25 19:33
查看资料  发短消息 网志   编辑帖子  回复  引用回复
luxipeng
初级用户




积分 20
发帖 17
注册 2008-9-7
状态 离线
『第 6 楼』:  



  Quote:
Originally posted by maky1117 at 2008-11-24 08:18 PM:
引用变量的方法大家应该耳熟能详了吧
set a=10
引用a的方法就是用%%
echo %a%
但是现在有个非典型例子,set 3=10,大家试试看?
echo %3%?
错!
echo %% ...

为什么我的就可以?





处于,并长期处于潜水状态
2008-12-1 21:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
s11ss
银牌会员





积分 2098
发帖 566
注册 2007-9-11
状态 离线
『第 7 楼』:  

在批处理中

2008-12-1 21:47
查看资料  发短消息 网志   编辑帖子  回复  引用回复

请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


可打印版本 | 推荐给朋友 | 订阅主题 | 收藏主题



论坛跳转: