标题: [已结]%^"这些符号的预处理顺序?
[打印本页]
作者: maky1117
时间: 2008-11-22 22:12
标题: [已结]%^"这些符号的预处理顺序?
研究批处理n久,很多难题也在学习前辈的经验之后一一化解,但是还是接连不断遇到莫名其妙的怪现象,下面先上两个例子:
echo ^%^%^%^%
输出^
echo ^%
pause123^%
uuuuu
pause
输出pause123uuuuu
很搞不懂^%是代表什么意思,哪位前辈能不吝为我指点迷津?另外我很想知道cmd解释器的预处理机制,它的解释原理是怎么样一个先后顺序的,这就如瞎猜西瓜熟透了没不如切开看个一目了然。
[
Last edited by HAT on 2008-11-23 at 20:36 ]
作者: tireless
时间: 2008-11-22 22:31
我觉得是这样:
先扩展变量
%^
% 和
%^%,因为没有定义变量 ^,所以就只剩下两个
^^,最后变成一个 ^。
Quote: |
echo ^%
pause123^%
uuuuu
pause
输出pause123uuuuu |
|
在
批处理中单独的 % 符号会被“抹”掉:
C:\>type test.bat
echo %
C:\>test.bat
C:\>echo
ECHO 处于打开状态。
————————————————
预处理究竟是如何进行的
http://www.cn-dos.net/forum/viewthread.php?tid=43905#pid305954
[
Last edited by tireless on 2008-11-22 at 23:30 ]
作者: HAT
时间: 2008-11-22 22:55
建议在初学批处理的时候,多研究一下实用性,对于这些偏僻的内容可以在自己具备一定功底的时候再去研究。
作者: maky1117
时间: 2008-11-22 23:15
谢谢版主前辈建议,只是个人比较喜欢钻点牛角尖,因为这些问题总是出其不意绊我一下,很不爽,想干脆一气把它们连根拔出,呵呵
作者: maky1117
时间: 2008-11-22 23:22
忘了提示一点,就是
echo ^%
pause123^%
uuuuu
pause
之中的每个^%后都不能有空格,否则就得不到pause123uuuuu的结果
谢谢你的解答,很受教

作者: HAT
时间: 2008-11-22 23:26
标题: Re 5楼
这里的百分号是多余的,可全部删除。
作者: tireless
时间: 2008-11-22 23:26
标题: Re 5楼
忘了说了:
Quote: |
因为 ^ 将每行后的看不到的“回车符”转义了,“回车符”起不到回车作用,自然就“不换行”了。 |
|
作者: maky1117
时间: 2008-11-23 15:40
明白,谢谢楼上的各位老大~~