标题: [原创] 由多个“&” “&&” “||” 连接的复合BAT语句的执行流程 [打印本页]
作者: 悬崖之树 时间: 2013-7-16 20:22 标题: 由多个“&” “&&” “||” 连接的复合BAT语句的执行流程
先看一个代码:
语句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 ………………………………
大家看懂了吗?
作者: 悬崖之树 时间: 2013-7-16 20:29
下面给大家出个题,我的电脑有 cdef 四个分区,如果运行下面的代码会怎么样?- @echo off
- dir c:\&&dir g:\&&dir h:\||dir d:\||dir f:\||echo ok&&echo qdj & ver
- 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,638,326,784 可用字节
设备未就绪。
驱动器 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 可用字节
Microsoft Windows [版本 6.1.7601]
请按任意键继续. . .
作者: CrLf 时间: 2013-7-16 20:51
和下链第五题如出一辙:
http://bbs.chinaunix.net/thread-4086457-1-1.html
作者: 悬崖之树 时间: 2013-7-16 21:21
本帖最后由 悬崖之树 于 2013-7-16 21:24 编辑
回复 3# CrLf
基本是差不多的,可是比那个稍微拓展了一点。一楼文章的末尾的例子分析才是关键。
作者: xxpinqz 时间: 2013-7-17 18:39
dir c:\&&dir g:\||dir d:\
dir c:成功,所以执行dir g:,但是dir g:错误,所以执行dir d: 解释的通吧?
作者: bgst 时间: 2013-7-23 08:32
又学到了新知识,感谢楼主
作者: Tony_zhangl 时间: 2013-8-12 15:18
谢谢分享!!
作者: zh_1452 时间: 2014-4-26 02:16
echo off
attrib c: d: e: f: /s && attrib c:\*.ini || attrib c:\*.ini +h
pause
echo on
作者: zh_1452 时间: 2014-4-26 05:47
@echo off
attrib c:\windows\system32\*.ini
type c:\windows\system32\*.ini
copy c:\windows\system32\*.ini e:\zh\
del e:\zh\*.*
xcopy c:\windows\system32\*.ini e:\zh\ /f
erase e:\zh\*.*
dir e:
dir c:\windows\system32\*.sys© c\windows\system32\*.sys e:\zh\
del e:\zh\*.*
pause
保存为bat删除要选择y或on请问有没有人知道不用选择的代码,给个参答案,谢。。。。。。
作者: cjiabing 时间: 2014-4-26 07:57
回复 9# zh_1452
请使用帮助信息C:\Users\Administrator>help/?
提供 Windows 命令的帮助信息。
HELP [command]
command - 显示该命令的帮助信息。
C:\Users\Administrator>xcopy/?
复制文件和目录树。
提问题请到咨询讨论版发帖,不要在其他人的帖子后面跟帖提问。
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |