中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]请教批处理变量的百分号的问题
作者:
标题: [已结]请教批处理变量的百分号的问题 上一主题 | 下一主题
rjoe
初级用户





积分 44
发帖 21
注册 2008-5-6
状态 离线
『楼 主』:  [已结]请教批处理变量的百分号的问题

新人在学批处理, 遇到这个问题想不通, 请大家帮忙解释一下:
1个百分号:
set test=abcd
echo %test%
这个明白, 结果就是abcd, 输出变量的内容.

2个百分号
set test=abcd
echo %%test%%
为什么结果是%test%, 而不是%abcd%.

3个百分号
set test=abcd
echo %%%test%%%
为什么结果是%abcd%, 这时为什么可以出来变量的值.

4个百分号
set test=abcd
echo %%%%test%%%%
为什么结果是%%test%%.

先谢谢大家了!

[ Last edited by HAT on 2008-11-26 at 13:38 ]

2008-11-26 11:15
查看资料  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





积分 2025
发帖 1122
注册 2007-9-5
状态 离线
『第 2 楼』:  

两个脱为一个。

%%test%%
——      ——
   ↓        ↓
   %test%

%%%test%%%
—— ———— ——
   ↘     ↓       ↙
     %abcd%

%%%%test%%%%
—— ——      —— ——
    ↘    ↓       ↓    ↙
       %%test%%

   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-26 13:39


2008-11-26 12:07
查看资料  发短消息 网志   编辑帖子  回复  引用回复
radem
高级用户

CMD感染者


积分 691
发帖 383
注册 2008-5-23
状态 离线
『第 3 楼』:  

还真细心观察滴



2008-11-26 12:19
查看资料  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





积分 9023
发帖 5017
注册 2007-5-31
状态 离线
『第 4 楼』:  

关于逃逸字符%的讲解
http://www.cn-dos.net/forum/viewthread.php?tid=19077#pid112069



2008-11-26 12:27
查看资料  发短消息 网志   编辑帖子  回复  引用回复
Climbing
铂金会员

网络独行侠


积分 6962
发帖 2753
注册 2003-4-16
来自 河北保定
状态 离线
『第 5 楼』:  

太机械了,为什么一定要到批处理室提问?

%对于DOS来说不是一个普通的字符,而是一个元字符,具有特殊的意义,所以在批处理中它的处理方式与普通字符不同。

如果你上面所说,“%变量% ”用来表示变量的值,这个没有疑义。

但是,如果“%%”,两个%连在一起,DOS就会将它解释为1个%,也就是说,两个%%相当于一个普通的%,它不再具有元字符的意思了。这个规则是按从左到右的顺序实行的。

所以,%%test%%就变成了两个普通的%中间夹着test。

其它的类似解析即可。

   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-26 13:39




偶只喜欢回答那些标题和描述都很清晰的帖子!
如想解决问题,请认真学习“这个帖子”和“这个帖子”并努力遵守,如果可能,请告诉更多的人!
2008-11-26 13:03
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (653668)  编辑帖子  回复  引用回复
rjoe
初级用户





积分 44
发帖 21
注册 2008-5-6
状态 离线
『第 6 楼』:  

感谢各位的解答, hehe…

2008-11-26 13:24
查看资料  发短消息 网志   编辑帖子  回复  引用回复
DOSforever
金牌会员





积分 4639
发帖 2239
注册 2005-1-30
状态 离线
『第 7 楼』:  

嘿嘿,我对小磕的话还真有点不同意见,这 % 还真和批处理有很大的关系,因为这 % 在 DOS 下是允许做文件名的,以前 WPS 生成的临时文件的后缀名就是 %A% 和 %B%,在 DOS 的命令提示符状态下你引用 %test% 是无效的,COMMAND 只会把这当正常字符来处理,echo %test% ,显示的就是 %test% ,只有在批处理中才会把它当环境变量来处理。当然,别的命令处理器可以在命令行下直接引用那是后话了。

   此帖被 +2 点积分    点击查看详情   
评分人:【 HAT 分数: +2  时间:2008-11-26 14:02




DOS倒下了,但永远不死
DOS NEVER DIES !

投票调查:
http://www.cn-dos.net/forum/viewthread.php?tid=46187

本人尚未解决的疑难问题:
http://www.cn-dos.net/forum/viewthread.php?tid=15135
http://www.cn-dos.net/forum/viewthread.php?tid=47663
http://www.cn-dos.net/forum/viewthread.php?tid=48747
2008-11-26 13:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: