标题: [已结]请教批处理变量的百分号的问题
[打印本页]
作者: rjoe
时间: 2008-11-26 11:15
标题: [已结]请教批处理变量的百分号的问题
新人在学批处理, 遇到这个问题想不通, 请大家帮忙解释一下:
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 ]
作者: tireless
时间: 2008-11-26 12:07
两个脱为一个。
%%test%%
—— ——
↓ ↓
%test%
%%%test%%%
—— ———— ——
↘ ↓ ↙
%abcd%
%%%%test%%%%
—— —— —— ——
↘ ↓ ↓ ↙
%%test%%
作者: radem
时间: 2008-11-26 12:19
还真细心观察滴
作者: HAT
时间: 2008-11-26 12:27
关于逃逸字符%的讲解
http://www.cn-dos.net/forum/viewthread.php?tid=19077#pid112069
作者: Climbing
时间: 2008-11-26 13:03
太机械了,为什么一定要到批处理室提问?
%对于DOS来说不是一个普通的字符,而是一个元字符,具有特殊的意义,所以在批处理中它的处理方式与普通字符不同。
如果你上面所说,“%变量% ”用来表示变量的值,这个没有疑义。
但是,如果“%%”,两个%连在一起,DOS就会将它解释为1个%,也就是说,两个%%相当于一个普通的%,它不再具有元字符的意思了。这个规则是按从左到右的顺序实行的。
所以,%%test%%就变成了两个普通的%中间夹着test。
其它的类似解析即可。
作者: rjoe
时间: 2008-11-26 13:24
感谢各位的解答, hehe…
作者: DOSforever
时间: 2008-11-26 13:59
嘿嘿,我对小磕的话还真有点不同意见,这 % 还真和批处理有很大的关系,因为这 % 在 DOS 下是允许做文件名的,以前 WPS 生成的临时文件的后缀名就是 %A% 和 %B%,在 DOS 的命令提示符状态下你引用 %test% 是无效的,COMMAND 只会把这当正常字符来处理,echo %test% ,显示的就是 %test% ,只有在批处理中才会把它当环境变量来处理。当然,别的命令处理器可以在命令行下直接引用那是后话了。