注册
登录
论坛
搜索
帮助
导航
私人消息 (0)
公共消息 (0)
论坛任务 (0)
系统消息 (0)
好友消息 (0)
帖子消息 (0)
批处理之家
»
BAT教程&资料
» [批处理命令一日一教学 续](50)管道符号:|
[新手上路]
批处理新手入门导读
[视频教程]
批处理基础视频教程
[视频教程]
VBS基础视频教程
[批处理精品]
批处理版照片整理器
[批处理精品]
纯批处理备份&还原驱动
[批处理精品]
CMD命令50条不能说的秘密
[在线下载]
第三方命令行工具
[在线帮助]
VBScript / JScript 在线参考
返回列表
发帖
cjiabing
发短消息
加为好友
cjiabing
(甲兵时代)
当前离线
UID
7853
帖子
1726
精华
2
积分
4476
PB
4191
技术
95
捐助
0
阅读权限
254
在线时间
1303 小时
注册时间
2008-12-21
最后登录
2018-10-23
荣誉版主
帖子
1726
积分
4476
技术
95
捐助
0
注册时间
2008-12-21
1
楼
跳转到
»
发表于 2012-2-8 14:59
|
显示全部帖子
你这个可以和49那个帖合并一起了,都是管道连接符号。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。
TOP
cjiabing
发短消息
加为好友
cjiabing
(甲兵时代)
当前离线
UID
7853
帖子
1726
精华
2
积分
4476
PB
4191
技术
95
捐助
0
阅读权限
254
在线时间
1303 小时
注册时间
2008-12-21
最后登录
2018-10-23
荣誉版主
帖子
1726
积分
4476
技术
95
捐助
0
注册时间
2008-12-21
2
楼
发表于 2012-2-12 21:02
|
显示全部帖子
回复
11#
Batcher
不会是我误导的吧?最近状态不好,表达不严谨,老说错话做错事。
其实我的意思是管道符和连接符,换个角度说,&、&&、|、||这些符号都有一个共同的特性,就是它们都能将两个命令连接起来,或表示并联,或表示串联:
& 连接符号,表示连接两个命令,此两个命令之间缺乏必要的关联,前后两个命令可以各独立成行;命令按横向顺序执行。如:@echo off&echo Yes&pause&exit,这样做的意义就是在FOR等命令当中能够实现用一行来执行多行的命令。
&& 表示连接两个命令,此两个命令之间存在先后顺序,即前一个命令执行成功后再执行后一个命令,没有前一命令执行结果(成功与否)反馈后一个命令就无法执行;命令不能分开执行,否则达不到原有功能和目的。打个比方,如果你点燃导火线(前一命令),鞭炮就会响(后一命令),而只要你点燃它肯定会响。&&的判断标准应该是类似于返回码之类的方式,也就是,你可以将&&语句改成:echo Yes&IF %ERRORLEVEL% == 0 echo 执行成功&pause。但我对返回码认识比较迷糊,可能只要命令执行了而不管有无结果返回码都算是0,似乎没有&&那么精确和方便。
| 传说中的管道符号,表示连接两个命令,并将前一个命令执行结果传输给后一个命令,理论上类似于单个FOR的执行过程;这两个命令存在先后关系,可以同时运行,但没有前一命令的结果后一命令就会发生错误。管道符|类似于接力赛上的接力棒,它从一个运动员的手上传递给下一个运动员的手上。如:dir|find /i "dir"
|| 仍然是管道符,表示连接两个命令,它将上一命令结果传输给下一命令执行,但它传输的是一种执行状态(成功与否),而不是或不仅仅是执行结果;性质上几乎与&&一模一样,只是功能上恰好相反,它表示上一命令执行失败后执行后一命令,如果不失败则不执行。如:echooo ooo||echo Bad。 或:echo ooo>nul 2>nul||echo Bad。
由以上可知,真正的管道符号是|,它真正传输了前一命令的结果到后一命令执行,这样就不必使用临时文件、临时变量了。如果||也算是管道符号,那么&&也应该算是,它们都会将前一命令的执行状态(返回码)传输给后一命令,以此决定后一命令是否执行。实际上在使用中我们都将两者放在同一参考位置上。真正在连接前后命令时没有像前三者一样向后一命令传递信息(执行状态和执行结果)的可能只有&。
以上说的执行状态,是指命令执行是否成功这一状态信息;执行结果,是指命令执行后获得的结果信息。
简单滴说:
&——将两个命令连接起来一起执行,各自独立。
|——将前面命令执行结果传递给后面命令,血肉相连。传输执行结果。
&&——如果前面命令执行成功,则执行后面命令,否则不执行。传输执行状态。
||——如果前面命令执行失败,则执行后面命令,否则不执行。传输执行状态。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。
TOP
返回列表
有偿求助
VBS教程&资料
BAT求助&讨论
批处理专区: BAT CMD DOS
BAT求助&讨论
BAT教程&资料
BAT原创&转载
BAT新大陆
BAT转载代码
新手练功
出题挑战
有偿求助
第三方命令行
开源原创工具
iBAT
Take Command
其他脚本区
PowerShell求助&讨论
PowerShell教程&资料
PowerShell原创&转载
VBS求助&讨论
JS / JScript / JavaScript
VBS教程&资料
VBS原创&转载
UNIX/Linux Shell
Python
Perl
网络资源区
电脑技术研讨
精品软件交流
论坛事务区
站务交流
意见反馈
论坛公告
版主申请
交换链接
建站杂谈
活动专区
论坛总版规
[收藏此主题]
[关注此主题的新回复]
[通过 QQ、MSN 分享给朋友]