[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[原创] 由多个“&” “&&” “||” 连接的复合BAT语句的执行流程

先看一个代码:
语句1&&语句2||语句3
一般认为是如果语句1执行成功就执行语句2,否则就执行语句3,真的是这样的吗?
答案是否定的,下面代码的运行环境是计算机共有cdef四个分区。
  1. @echo off
  2. dir c:\&&dir g:\||dir d:\
  3. 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 ………………………………  
大家看懂了吗?
时光荏苒||新陈代谢&&涛声依旧||本性难移

下面给大家出个题,我的电脑有 cdef 四个分区,如果运行下面的代码会怎么样?
  1. @echo off
  2. dir c:\&&dir g:\&&dir h:\||dir d:\||dir f:\||echo ok&&echo qdj & ver
  3. 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]
请按任意键继续. . .
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

和下链第五题如出一辙:
http://bbs.chinaunix.net/thread-4086457-1-1.html

TOP

本帖最后由 悬崖之树 于 2013-7-16 21:24 编辑

回复 3# CrLf
基本是差不多的,可是比那个稍微拓展了一点。一楼文章的末尾的例子分析才是关键。
时光荏苒||新陈代谢&&涛声依旧||本性难移

TOP

dir c:\&&dir g:\||dir d:\
dir c:成功,所以执行dir g:,但是dir g:错误,所以执行dir d:    解释的通吧?
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

又学到了新知识,感谢楼主

TOP

谢谢分享!!

TOP

echo off
attrib c: d: e: f: /s && attrib c:\*.ini || attrib c:\*.ini +h
pause
echo on

TOP

@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&copy c\windows\system32\*.sys e:\zh\
del e:\zh\*.*
pause
保存为bat删除要选择y或on请问有没有人知道不用选择的代码,给个参答案,谢。。。。。。

TOP

回复 9# zh_1452


    请使用帮助信息
C:\Users\Administrator>help/?
提供 Windows 命令的帮助信息。

HELP [command]

command - 显示该命令的帮助信息。

C:\Users\Administrator>xcopy/?
复制文件和目录树。

提问题请到咨询讨论版发帖,不要在其他人的帖子后面跟帖提问。
寂寞是黑白的,但黑白不是寂寞,是永恒。BAT 需要的不是可能,而是智慧。

TOP

返回列表