中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » [整理参考] CMD/DOS下符号的作用参考
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [15] »
作者:
标题: [整理参考] CMD/DOS下符号的作用参考 上一主题 | 下一主题
lxmxn
版主




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

Re qzwqzw

“记得曾经有人说过
它不过是一个无效的标签而已
注释只是它的副作用”
已经去掉了关于::的解释。

“因为cmd检查到冒号后有无效字符时直接忽略处理”
测试发现无所谓“无效”字符,可以是任何字符。

“相反数的说法容易让人误解”
已经修改过来了,先前这样写是让别人容易理解写,但是没有描述其具体的本质作用。

“^是按位异或”
已经修改。
btw,想问一下,异或 和 异有什么区别呢?

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

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 17 楼』:  

测试发现无所谓“无效”字符,可以是任何字符。
-----------------------
:字符后当然可以是任何字符
因为无效字符cmd是忽略解释的

怎么可以知道这一点呢?
定制一个这样的标签 ::errorlabel
然后试着goto ::errorlabel
如果能goto到说明是有效的
否则是无效的

我们的注释自然是需要无效的标签标记
否则有可能跟系统定义的或者我们定义的标签冲突

关于::的由来其实早有渊源
起初是因为 ms-dos 给的 rem 命令后无法直接使用管道和重定向符号
而且如果不echo off它的代码就会在运行时回显
所以就有人钻了这么一个漏子而已

从这几点也可以看出
因为少了许多预处理的过程
使用::的效率要高于rem

后来虽然cmd中虽然对rem作了许多改进
但::因为简单易用并且接近高级语言的注释标记
所以已经流传开来
----------------------------------

我没有见过“按位异”的说法
“异或”的意思是 不同于“或”
因为或的规则是
0|0=0
0|1=1
1|0=1
1|1=1

而异或稍有变化
0^0=0
0^1=1
1^0=1
1^1=0

[ Last edited by qzwqzw on 2007-5-31 at 12:46 PM ]

2007-5-31 12:42
查看资料  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




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

多谢qzwqzw释疑。。

我说的:后面可以是任何字符,是指在做注释时,没有被调用的标签都可以做注释。

关于goto ::errorlabel这样一个标签,无论如何也goto不到,所以用::就比较合理了。

个人理解是因为在goto里面,如果标签里面有:号,那么这个分号只是一个分隔符而已,类似的还有几个,比如 , : ( ,在它们后面的字符就不作解释了。
如果 goto ::errorlabel ,那么批处理就认为是在goto一个空的标签,而空的标签是无法构造和让goto起作用的。

示例:(为了可以返回用call代替了goto)
@echo off
call :hello;bat
call :hello,vbs
call :hello:asm
call :hello(java
call ::hello
pause&goto :eof

:hello
echo This is one line.
goto :eof
:
echo This is other line.
[ Last edited by lxmxn on 2007-5-31 at 08:15 PM ]

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

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 19 楼』:  

你对::的理解比我更确切
-----------------------------------------------------------------------

从预处理的角度分析

在goto和:label的预处理过程中
所有的特殊字符全部被转义或过滤
而goto ::label被预处理成了个 goto 空标签 label
label被goto忽略

因为无法为空标签设置跳转标记
所以::label不会起作用
-----------------------------------------------------------------------

“:是无效字符”更确切的说是“:等字符是用于界定token的分隔符(或者界定符)”
“cmd忽略无效标签”更确切的说是“goto忽略了空标签后的多余参数”

[ Last edited by qzwqzw on 2007-6-2 at 11:51 PM ]

2007-5-31 19:08
查看资料  发短消息 网志   编辑帖子  回复  引用回复
scriptor
银牌会员




积分 1187
发帖 555
注册 2006-12-21
状态 离线
『第 20 楼』:  



  Quote:
Originally posted by lxmxn at 2007-5-30 22:24:
Re scriptor:

嗯,多谢补充,我再添加进去。

根据 qzwqze 15楼的解释,已经取消了关于::的注释说明。

[ Last edited by lxmxn on 2007-5-31 at 10:17 AM ]

呵呵
没事!

15#
看来我知道的太少啊

惭愧 。

2007-6-1 00:59
查看资料  发短消息 网志   编辑帖子  回复  引用回复
dinfli
初级用户




积分 180
发帖 82
注册 2007-1-11
状态 离线
『第 21 楼』:  

DDDDDD



好爱你哦。。。老婆
2007-6-1 01:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
qinbuer
高级用户

我思故我在


积分 512
发帖 228
注册 2007-1-21
状态 离线
『第 22 楼』:  

少的就是它!



我确实是只菜鸟,而且这里X人太多,所以我不敢装X。谁要再说我装X,我就XXOO他。
2007-6-1 02:16
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wj12390
新手上路





积分 18
发帖 9
注册 2007-6-1
状态 离线
『第 23 楼』:  呵呵。

好东西

2007-6-4 15:08
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Li103Z
初级用户





积分 70
发帖 38
注册 2007-5-23
状态 离线
『第 24 楼』:  

8错

2007-6-7 11:11
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
haiou327
高级用户

DOS时空


积分 713
发帖 348
注册 2007-2-10
状态 离线
『第 25 楼』:  

收藏了。



欢迎进入我的网盘!!!
2007-6-22 01:22
查看资料  发送邮件  访问主页  发短消息 网志  OICQ (52688226)  编辑帖子  回复  引用回复
wgx1688
初级用户





积分 60
发帖 34
注册 2007-4-24
状态 离线
『第 26 楼』:  

不怎么懂啊~!!

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

天的白色影子


积分 2342
发帖 635
注册 2004-3-6
状态 离线
『第 27 楼』:  

%=
① 在set /a中的二元运算符。例如set /a a"%="b表示将a除以b的余数赋值给a。
【 %= 两边加上 " 防止 % 被转义,下同。】
--------------------------------------------------------------------------
【】里的说明有问题
cmd的命令行预处理中
%的解析早于"
也就是说%的优先级高于"
所以引号对不能取消%的转义

这里应该说明的是
在命令行中用单个%没有问题
set /a a%=b

在批处理中需要使用双%
set /a a%%=b

2007-6-26 11:11
查看资料  发短消息 网志   编辑帖子  回复  引用回复
wl48693752
初级用户





积分 24
发帖 9
注册 2007-6-13
状态 离线
『第 28 楼』:  

好哦,收藏了

2007-6-26 11:49
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
wl48693752
初级用户





积分 24
发帖 9
注册 2007-6-13
状态 离线
『第 29 楼』:  

能有份这样汇集批处理知识的帖子或者文章就好了

2007-6-26 13:01
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
Lick
初级用户





积分 62
发帖 28
注册 2006-3-14
状态 离线
『第 30 楼』:  

多谢分享了,收藏了!

2007-6-26 13:12
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
« [1] [2] [3] [4] [5] [6] [7] [8] [9] [10] ... [15] »
请注意:您目前尚未注册或登录,请您注册登录以使用论坛的各项功能,例如发表和回复帖子等。


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



论坛跳转: