先看一个代码:
语句1&&语句2||语句3
一般认为是如果语句1执行成功就执行语句2,否则就执行语句3,真的是这样的吗?
答案是否定的,下面代码的运行环境是计算机共有cdef四个分区。- @echo off
- dir c:\&&dir g:\||dir d:\
- pause
复制代码 执行后回显:
驱动器 C 中的卷没有标签。
卷的序列号是 C0B8-217C
c:\ 的目录
2009/06/11 05:42 24 autoexec.bat
2009/06/11 05:42 10 config.sys
2013/05/30 18:49 <DIR> Drivers
2013/06/25 18:33 <DIR> Human
2013/05/30 20:40 <DIR> Intel
2013/05/30 19:02 <DIR> NVIDIA
2009/07/14 10:37 <DIR> PerfLogs
2013/07/11 18:45 <DIR> Program Files
2013/05/30 20:36 <DIR> Users
2013/07/10 20:32 <DIR> Windows
2013/07/12 22:36 434 本地磁盘 (E) - 快捷方式.lnk
3 个文件 468 字节
8 个目录 28,693,123,072 可用字节
设备未就绪。
驱动器 D 中的卷没有标签。
卷的序列号是 6C97-9E44
d:\ 的目录
2013/07/13 16:39 <DIR> 56video
2013/07/11 21:23 <DIR> FavoriteVideo
2013/07/11 17:44 <DIR> FunshionMedia
2013/07/13 18:44 <DIR> KanKan
2013/06/02 18:43 <DIR> kugou
2013/06/02 18:39 <DIR> Kuwo
2012/09/11 12:41 <DIR> MyDrivers
2013/06/28 20:57 <DIR> myweb
2013/07/08 22:32 <DIR> pipicache
2013/06/12 18:54 <DIR> PPDownload
2013/07/12 17:23 <DIR> ppsfile
2013/06/12 12:52 <DIR> stormmedia
2013/06/15 20:20 <DIR> Youku Files
2012/11/17 18:06 <DIR> 待定文件
2013/07/10 20:21 <DIR> 系统补丁
2013/07/11 22:35 <DIR> 鸡肋文件
0 个文件 0 字节
16 个目录 107,267,162,112 可用字节
请按任意键继续. . .
发觉语句1是执行成功的,但是语句三还是执行了,原因就是语句2没有成功。
下面开始举例:(为方便,用$和数字表示一条命令)
$0 && $1 && $2 && $3 || $4 || $5 || $6 || $7 && $8 & $9 || $10
如果0成功,那就运行1,如果1不成功,那就跳过2,3,也就是3执行失败,那就执行4,如果4成功,那5,6,7都不运行,也就是7执行失败,那8就不执行,但是9是无条件要运行的,如果9失败 就执行10 ………………………………
大家看懂了吗? |