中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-04 14:20
48,038 主题排行 / 350,123 发帖 / 今日 0 篇 / 48,251 会员排行
DOS批处理 & 脚本技术(批处理室) » 本人发现转义符^一个有趣现象
可打印版本  943 / 6
第1楼 stornager 发表于 2007-05-13 22:50
中级用户 发帖 131 积分 328
本人发现转义符^一个有趣现象
@echo off
color 1f
echo ^|^^^^^^^^^^^^^^^^^^^^|^>nul^
echo ^######################>nul^
echo ^!!!I love bach!!!^
echo ^######################>nul^
echo ^|^^^^^^^^^^^^^^^^^^^^^>nul^
pause>nul
请各位兄测试一下这个代码,你将回看到什么.....
第2楼 lxmxn 发表于 2007-05-14 00:14
版主 发帖 4,938 积分 11,386
测试发现生成一个空文本文件 nulecho ,提示

'!!!I' 不是内部或外部命令,也不是可运行的程序
或批处理文件。
过程试图写入的管道不存在。
第3楼 stornager 发表于 2007-05-14 14:13
中级用户 发帖 131 积分 328
请问版主为什么会生成一个空文本文件 nulecho ??我觉得“^”好象能使”echo“回显。

[ Last edited by stornager on 2007-5-14 at 02:17 PM ]
第4楼 lxmxn 发表于 2007-05-14 14:29
版主 发帖 4,938 积分 11,386
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 有过这方面的分析,你可以搜索一下。
第5楼 flyinspace 发表于 2007-05-14 14:43
银牌会员 发帖 517 积分 1,206
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了。。

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

^^
^^^
^^^|
的作用。
第6楼 stornager 发表于 2007-05-14 17:24
中级用户 发帖 131 积分 328
请5楼分析下面代码运行的结果为何没有I love batch!

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

echo %time% >a.txt^
ping -n 2 127.1>nul&pause>nul
第7楼 lxmxn 发表于 2007-05-14 17:47
版主 发帖 4,938 积分 11,386
To stornager:

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

  修改一下代码之后,就可以显示出来了。
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023