中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 本人发现转义符^一个有趣现象
作者:
标题: 本人发现转义符^一个有趣现象 上一主题 | 下一主题
stornager
中级用户

scriptlover


积分 328
发帖 131
注册 2007-3-25
状态 离线
『楼 主』:  本人发现转义符^一个有趣现象

@echo off
color 1f
echo ^|^^^^^^^^^^^^^^^^^^^^|^>nul^
echo ^######################>nul^
echo ^!!!I love bach!!!^
echo ^######################>nul^
echo ^|^^^^^^^^^^^^^^^^^^^^^>nul^
pause>nul
请各位兄测试一下这个代码,你将回看到什么.....



scriptlover
Be with script forever!!
2007-5-13 22:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 2 楼』:  

测试发现生成一个空文本文件 nulecho ,提示

  Quote:
'!!!I' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
过程试图写入的管道不存在。



2007-5-14 00:14
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
stornager
中级用户

scriptlover


积分 328
发帖 131
注册 2007-3-25
状态 离线
『第 3 楼』:  

请问版主为什么会生成一个空文本文件 nulecho ??我觉得“^”好象能使”echo“回显。

[ Last edited by stornager on 2007-5-14 at 02:17 PM ]



scriptlover
Be with script forever!!
2007-5-14 14:13
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 4 楼』:  



  Quote:
Originally posted by stornager at 2007-5-14 14:13:
请问版主为什么会生成一个空文本文件 nulecho ??我觉得“^”好象能使”echo“回显。

[ Last edited by stornager on 2007-5-14 at 02:17 PM ]

我自己也不清楚为什么会生成这个空文件;

关于特殊符号和管道符一起产生的“奇怪”的现象,一直没有弄清楚,可能 willsort 有过这方面的分析,你可以搜索一下。

2007-5-14 14:29
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
flyinspace
银牌会员





积分 1206
发帖 517
注册 2007-3-25
状态 离线
『第 5 楼』:  



  Quote:
Originally posted by stornager at 2007-5-14 02:13 PM:
请问版主为什么会生成一个空文本文件 nulecho ??我觉得“^”好象能使”echo“回显。

[ Last edited by stornager on 2007-5-14 at 02:17 PM ]

很简单的原因啊?

请问  nul 后面的是什么?是回车??

那么使用了转义字符后就让回车无效了。。

即:nul变成了  nulecho了。。

另外,若要理解转义字符。。请测试;:

^^
^^^
^^^|
的作用。

   此帖被 +15 点积分         点击查看详情   
评分人:【 everest79 分数: +15  时间:2007-5-15 00:26




知,不觉多。不知,乃求知
2007-5-14 14:43
查看资料  发短消息 网志   编辑帖子  回复  引用回复
stornager
中级用户

scriptlover


积分 328
发帖 131
注册 2007-3-25
状态 离线
『第 6 楼』:  

请5楼分析下面代码运行的结果为何没有I love batch!

@echo off
echo ^|^
echo I love batch!^
echo ^|^

echo %time% >a.txt^
ping -n 2 127.1>nul&pause>nul



scriptlover
Be with script forever!!
2007-5-14 17:24
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




积分 11386
发帖 4938
注册 2006-7-23
状态 离线
『第 7 楼』:  

To stornager:

  根据5楼 flyinspace 兄的解释,对于行尾的 ^ 符号,它将把一行末尾的回车符转义,也就是让回车符失去原本已有的作用,换句话说,就是让回车符失去换行的作用,这样,每行末尾的 ^ 符号将在echo命令的作用下,将几行原本在不同行的文本“连接”成一行。但是由于你 ping 命令后面的>nul,导致echo命令本应该输出到原来文本的字符串重定向到空设备了,这样,你就无法看见你认为会出现的结果了。

  修改一下代码之后,就可以显示出来了。
@echo off
echo ^|^
echo I love batch!^
echo ^|^

echo %time% >a.txt^
ping -n 2 127.1&start a.txtping&pause


   此帖被 +4 点积分        点击查看详情   
评分人:【 stornager 分数: +2  时间:2007-5-14 23:26
评分人:【 zqdarkday 分数: +2  时间:2007-11-15 13:08


2007-5-14 17:47
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: