中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [已结]%^"这些符号的预处理顺序?
作者:
标题: [已结]%^"这些符号的预处理顺序? 上一主题 | 下一主题
maky1117
初级用户





积分 24
发帖 11
注册 2008-11-22
状态 离线
『楼 主』:  [已结]%^"这些符号的预处理顺序?

研究批处理n久,很多难题也在学习前辈的经验之后一一化解,但是还是接连不断遇到莫名其妙的怪现象,下面先上两个例子:
echo ^%^%^%^%
输出^
echo ^%
pause123^%
uuuuu
pause
输出pause123uuuuu

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

[ Last edited by HAT on 2008-11-23 at 20:36 ]

2008-11-22 22:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
tireless
银牌会员





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



  Quote:
echo ^%^%^%^%
输出^

我觉得是这样:
先扩展变量 %^%%^%,因为没有定义变量 ^,所以就只剩下两个 ^^,最后变成一个 ^。

  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 ]

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


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





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

建议在初学批处理的时候,多研究一下实用性,对于这些偏僻的内容可以在自己具备一定功底的时候再去研究。



2008-11-22 22:55
查看资料  发短消息 网志   编辑帖子  回复  引用回复
maky1117
初级用户





积分 24
发帖 11
注册 2008-11-22
状态 离线
『第 4 楼』:  

谢谢版主前辈建议,只是个人比较喜欢钻点牛角尖,因为这些问题总是出其不意绊我一下,很不爽,想干脆一气把它们连根拔出,呵呵

2008-11-22 23:15
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
maky1117
初级用户





积分 24
发帖 11
注册 2008-11-22
状态 离线
『第 5 楼』:  

忘了提示一点,就是
echo ^%
pause123^%
uuuuu
pause
之中的每个^%后都不能有空格,否则就得不到pause123uuuuu的结果

谢谢你的解答,很受教

2008-11-22 23:22
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
HAT
版主





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

这里的百分号是多余的,可全部删除。



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





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

忘了说了:

  Quote:
因为 ^ 将每行后的看不到的“回车符”转义了,“回车符”起不到回车作用,自然就“不换行”了。



2008-11-22 23:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
maky1117
初级用户





积分 24
发帖 11
注册 2008-11-22
状态 离线
『第 8 楼』:  

明白,谢谢楼上的各位老大~~

2008-11-23 15:40
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: