中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-10 15:57
47,811 主题排行 / 349,897 发帖 / 今日 0 篇 / 48,255 会员排行
DOS批处理 & 脚本技术(批处理室) » [已结]%^"这些符号的预处理顺序?
可打印版本  847 / 7
第1楼 maky1117 发表于 2008-11-22 22:12
初级用户 发帖 11 积分 24
[已结]%^"这些符号的预处理顺序?
研究批处理n久,很多难题也在学习前辈的经验之后一一化解,但是还是接连不断遇到莫名其妙的怪现象,下面先上两个例子:

输出^


输出pause123uuuuu

很搞不懂^%是代表什么意思,哪位前辈能不吝为我指点迷津?另外我很想知道cmd解释器的预处理机制,它的解释原理是怎么样一个先后顺序的,这就如瞎猜西瓜熟透了没不如切开看个一目了然。

[ Last edited by HAT on 2008-11-23 at 20:36 ]
第2楼 tireless 发表于 2008-11-22 22:31
银牌会员 发帖 1,122 积分 2,025
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 ]
第3楼 HAT 发表于 2008-11-22 22:55
版主 发帖 5,017 积分 9,023
建议在初学批处理的时候,多研究一下实用性,对于这些偏僻的内容可以在自己具备一定功底的时候再去研究。
第4楼 maky1117 发表于 2008-11-22 23:15
初级用户 发帖 11 积分 24
谢谢版主前辈建议,只是个人比较喜欢钻点牛角尖,因为这些问题总是出其不意绊我一下,很不爽,想干脆一气把它们连根拔出,呵呵
第5楼 maky1117 发表于 2008-11-22 23:22
初级用户 发帖 11 积分 24
忘了提示一点,就是
echo ^%
pause123^%
uuuuu
pause
之中的每个^%后都不能有空格,否则就得不到pause123uuuuu的结果

谢谢你的解答,很受教
第6楼 HAT 发表于 2008-11-22 23:26
版主 发帖 5,017 积分 9,023
Re 5楼
这里的百分号是多余的,可全部删除。
第7楼 tireless 发表于 2008-11-22 23:26
银牌会员 发帖 1,122 积分 2,025
Re 5楼
忘了说了:
因为 ^ 将每行后的看不到的“回车符”转义了,“回车符”起不到回车作用,自然就“不换行”了。
第8楼 maky1117 发表于 2008-11-23 15:40
初级用户 发帖 11 积分 24
明白,谢谢楼上的各位老大~~
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023