中国DOS联盟论坛

中国DOS联盟

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

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

游客:  注册 | 登录 | 命令行 | 会员 | 搜索 | 上传 | 帮助 »
作者:
标题: 关于批处理的命令分隔符 上一主题 | 下一主题
cao7113
初级用户





积分 50
发帖 19
注册 2008-3-31
状态 离线
『楼 主』:  关于批处理的命令分隔符

在其它高级语言中一般都有明确的语句分隔符(如C/C++,Java中的分号),而dos批处理中一般直接给出命令即可,那么解释器执行命令是靠什么来分隔命令语句的呢?
     如果想在某条件成立时执行多条语句,一般会用()把多条语句括起来,各条命令语句间再以换行分隔,如下面的条件语句:

if not "true"=="true" (echo true...
echo true1
echo true2...
)else (echo false0
echo false1
)

     通过以上示例是不是说明,dos解释器是靠换行符分隔命令的。如果是,我们如何直接人工输入之,使得可以写出如下的语句效果(多条语句显示在同一行中):
     cmd1[换行符]cmd2[换行符]cmd3


    有没有做过相关研究的大侠,望多多指教,无比感谢!!!

2008-5-17 13:09
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
lxmxn
版主




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

用 & 也可以在同一行连接多个命令吧?

   此帖被 +1 点积分    点击查看详情   
评分人:【 cao7113 分数: +1  时间:2008-5-20 09:32


2008-5-19 16:06
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
cao7113
初级用户





积分 50
发帖 19
注册 2008-3-31
状态 离线
『第 3 楼』:  从帮助中摘录的相关内容

以下为从从帮助中摘录的相关内容,可以很好的回答该问题:

##------------------------------------------------------------------------------
使用多个命令和条件处理符号



使用条件处理符号可以从单个命令行或脚本运行多个命令。通过条件处理符号运行多个命令时,条件处理符号右边的命令根据条件处理符号左边的命令结果来发挥作用。例如,只有在前一个命令失败的情况下,才可能需要运行一个新命令。或者,只有在前一个命令成功时才可能需要运行一个新命令。


可以使用下表列出的特殊字符来传递多个命令。


字符
语法
定义


& [...]
command1 & command2
用来分隔一个命令行中的多个命令。Cmd.exe 运行第一个命令,然后运行第二个命令。


&& [...]
command1 && command2
只有在符号 && 前面的命令成功时,才用于运行该符号后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令运行成功时才运行第二个命令。


|| [...]
command1 || command2
只有在符号 || 前面的命令失败时,才用于运行符号 || 后面的命令。Cmd.exe 运行第一个命令,然后只有在第一个命令未能运行成功(接收到大于零的错误代码)时才运行第二个命令。


( ) [...]
(command1 & command2)
用来分组或嵌套多个命令。


; 或者 ,
command1 parameter1;parameter2
用来分隔命令参数。




注意

    “与”符号 (&)、管道符号 (|) 以及括号 () 是特殊字符,将它们作为参数传递时,必须在其前面加上转义字符 (^) 或引号。
        如果某个命令成功完成操作,则该命令就返回零 (0) 退出代码或不返回任何退出代码。有关退出代码的详细信息,请参阅 Microsoft Windows Resource Kit。

2008-5-20 09:19
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
prodigall
初级用户





积分 80
发帖 36
注册 2007-6-14
状态 离线
『第 4 楼』:  

學習了
不過我在系統的幫助中找不到以上內容啊

2008-10-14 15:50
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
5566ljlj
初级用户





积分 42
发帖 27
注册 2009-2-24
状态 离线
『第 5 楼』:  

学习学习了

2009-3-14 03:02
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
nobodytt
初级用户





积分 78
发帖 33
注册 2008-12-9
状态 离线
『第 6 楼』:  

哪么一条很长的命令语句如何分成多行来写呢?

比如:cmd | lmod1 | lmod2 | lmod3 | ... > 1.txt

2009-3-14 06:26
查看资料  发短消息 网志   编辑帖子  回复  引用回复
linge
新手上路





积分 11
发帖 10
注册 2008-11-28
状态 离线
『第 7 楼』:  

可以使用^来分行的,你可以试试麻

2009-3-19 01:28
查看资料  发送邮件  发短消息 网志   编辑帖子  回复  引用回复
QOIQoc
初级用户





积分 48
发帖 51
注册 2009-3-3
状态 离线
『第 8 楼』:  

如果像设置变量:

set ae=%windir% & copy tes.txt %ae% & attrib +r %ae%\tes.txt

好像要先预处理

2009-3-19 07:25
查看资料  发短消息 网志   编辑帖子  回复  引用回复

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


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



论坛跳转: