Board logo

标题: 求 || 和 && 的用法 [打印本页]

作者: foxandmonkey     时间: 2005-4-17 00:00    标题: 求 || 和 && 的用法

像$ 、 || 、&& 这样的算符的用法怎么在联机文档里找不到的,打* /? 或help * 都没有
请问在windows里有没有什么关于这类符号的联机文档可查,如果有,用什么方法查
作者: Wengier     时间: 2005-4-17 00:00
||和&&是编程语言中的逻辑或和逻辑与运算符吧。
作者: foxandmonkey     时间: 2005-4-18 00:00
这个没错,但在dos好像另有用法,
比如 在坛子里看到 别人写过
IPCONFIG | FINDSTR /C:"IP Address" || ECHO 127.0.0.1
还有wandyac在《[分享]dos命令 - "FOR" - 高级应用范例》里提到过一句“实际上,当MS从WIN2K开始将命令行增强后,已经借鉴了相当多UNIX的优点,虽然还无法做到象UNIX那么灵活,但已可完成绝大多数的任务,比如用&&和||连接两个(或更多)命令...”
但他后面没有展开讲这两个算符

[此贴子已经被作者于2005-4-18 8:08:05编辑过]



作者: willsort     时间: 2005-4-18 00:00
Re foxandmonkey:  如果你处在Win2K/WinXP等操作系统中,那么你可以在系统帮助中搜索“命令解释器”或者“cmd”查看“命令解释器概述”一文,其中有关于&&与||很标准的描述。如果你处在MSDOSx.xx/Win9x等操作系统中,那不会支持&&与||的用法,所以也不会查到他们的任何消息。  通俗的来讲,&&与||在高级语言中分别是“快速逻辑与/或”,即前一表达式成立/不成立时,才执行后一表达式;在WinXP的命令行中他们取了类似的概念。即前一命令/语句成立/不成立时,才执行后一命令/语句。
作者: chenhui530     时间: 2005-4-18 00:00
楼主你发的这个帖子已经存在了我也给出答案了你自己去查下吧
作者: chenhui530     时间: 2005-4-18 00:00
http://bbs.cn-dos.net/dispbbs.asp?BoardID=9&ID=15217
作者: Climbing     时间: 2005-4-18 00:00
&&相当于“与”,如果前一条命令返回值为真,则继续执行后一条命令,|| 相当于“或”的意思,如果前一条命令的返回值为假,则执行后一条命令。例如:dir \autoexec.bat >nul 2>nul  && echo You got it! || echo cannot found \autoexec.bat
如果存在\autoexec.bat,那么显示You got it! ,否则显示cannot found \autoexec.bat。
作者: Wengier     时间: 2005-4-18 00:00
foxandmonkey,"这个没错,但在dos好像另有用法"其實那應該說成是NT命令行下的用法,因為NT系列的操作系統中是沒有DOS的。上面的willsort也提到了,DOS下是沒有這些用法的(當然,如果DOS下有的話就太好了,可惜M$已經..)。
作者: willsort     时间: 2005-4-18 00:00
Re foxandmonkey:  关于“命令/语句的成立/不成立”,我做一下补充:  所谓“成立”,即Climbing兄提到的“返回值为真”,是指命令/语句正常执行结束,并未出现任何错误,此时命令/语句会设置errorlevel为0;否则,“返回值为假”,errorlevel被设为非0值,表示各种状态的错误。这与C语言的真假概念正好相反,却符合汇编对“错”与“未错”的区分。  也就是说,||与&&是根据前一命令/语句的errorlevel来判断是否执行后一语句的;如果,有一命令或正常执行结束却返回非0值的errorlevel,那么会被系统认为执行失败,此时将不会执行&&后的语句,但会执行||后的语句。  此外,在支持||与&&的WinXP等系统环境中,CMD中的内部命令将会设置errorlevel后返回,以配合系统的这项功能特性;在MSDOSx.xx/Win9x等系统中则不同,其COMMAND的内部命令执行结束时不会影响errorlevel值,也即不通过int21的43号子功能返回,所以即使通过外部命令实现了类似&&和||的功能,也将会无法使用这个特性。
作者: foxandmonkey     时间: 2005-4-19 00:00
谢谢大家,给了我莫大的帮助和信心。这个坛子感觉很专业,比外面的水坛完全两样,人不很多但氛围特别好 ,喜欢!大家有没有玩过mud的,我从那个游戏开始就对命令行对话产生了感情,呵呵