楼 主
[已结]%^"这些符号的预处理顺序?
发表于 2008-11-22 22:12 · 中国 天津 联通
初级用户
★
积分 24
发帖 11
注册 2008-11-22 21:08
UID 131788
性别 男
状态 离线
研究批处理n久,很多难题也在学习前辈的经验之后一一化解,但是还是接连不断遇到莫名其妙的怪现象,下面先上两个例子:
echo ^%^%^%^%
输出^
echo ^%
pause123^%
uuuuu
pause
输出pause123uuuuu
很搞不懂^%是代表什么意思,哪位前辈能不吝为我指点迷津?另外我很想知道cmd解释器的预处理机制,它的解释原理是怎么样一个先后顺序的,这就如瞎猜西瓜熟透了没不如切开看个一目了然。
[
Last edited by HAT on 2008-11-23 at 20:36 ]
第 2 楼
发表于 2008-11-22 22:31 · 中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
echo ^%^%^%^%
输出^
我觉得是这样:
先扩展变量
%^
% 和
%^%,因为没有定义变量 ^,所以就只剩下两个
^^,最后变成一个 ^。
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 ]
本帖最近评分记录
(共 1 条)
点击查看详情
| 评分人 | 分数 | 时间 |
| HAT |
+2 |
2008-11-23 20:35 |
第 3 楼
发表于 2008-11-22 22:55 · 中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
建议在初学批处理的时候,多研究一下实用性,对于这些偏僻的内容可以在自己具备一定功底的时候再去研究。
第 4 楼
发表于 2008-11-22 23:15 · 中国 天津 联通
初级用户
★
积分 24
发帖 11
注册 2008-11-22 21:08
UID 131788
性别 男
状态 离线
谢谢版主前辈建议,只是个人比较喜欢钻点牛角尖,因为这些问题总是出其不意绊我一下,很不爽,想干脆一气把它们连根拔出,呵呵
第 5 楼
发表于 2008-11-22 23:22 · 中国 天津 联通
初级用户
★
积分 24
发帖 11
注册 2008-11-22 21:08
UID 131788
性别 男
状态 离线
忘了提示一点,就是
echo ^%
pause123^%
uuuuu
pause
之中的每个^%后都不能有空格,否则就得不到pause123uuuuu的结果
谢谢你的解答,很受教

第 6 楼
Re 5楼
发表于 2008-11-22 23:26 · 中国 重庆 电信
版主
★★★★★
积分 9,023
发帖 5,017
注册 2007-05-31 19:39
UID 89899
性别 男
状态 离线
第 7 楼
Re 5楼
发表于 2008-11-22 23:26 · 中国 江西 赣州 电信
银牌会员
★★★★
积分 2,025
发帖 1,122
注册 2007-09-05 20:15
UID 96653
性别 男
状态 离线
忘了说了:
因为 ^ 将每行后的看不到的“回车符”转义了,“回车符”起不到回车作用,自然就“不换行”了。
第 8 楼
发表于 2008-11-23 15:40 · 中国 天津 联通
初级用户
★
积分 24
发帖 11
注册 2008-11-22 21:08
UID 131788
性别 男
状态 离线
论坛跳转: