dedecms织梦内容管理系统      

--充电学院首页-- | --IT新闻与咨询-- | --电脑应用技术-- | --网络操作技巧-- | --软件硬件教程-- | --其他相关文章-- | --常用优秀软件-- | --桌面图片欣赏-- | --网络淘金技法-- | --媒体网站资源-- | --火狐专题介绍-- |

  当前位置:主页>精品资料收藏>文章内容
BAT教程全集(4)
来源: 作者:方舟 发布时间:2008-08-17  
stvista   ====================
  特殊命令
  if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。
  一、if 是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。 有三种格式:
  1、if [not] "参数" == "字符串" 待执行的命令
  参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。
  例:if "%1"=="a" format a:
  ==== willsort 编注
  if 的命令行帮助中关于此点的描述为:
  IF [NOT] string1==string2 command
  在此有以下几点需要注意:
  1. 包含字符串的双引号不是语法所必须的, 而只是习惯上使用的一种"防空"字符
  2. string1 未必是参数, 它也可以是环境变量, 循环变量以及其他字符串常量或变量
  3. command 不是语法所必须的, string2 后跟一个空格就可以构成一个有效的命令行
  =============================
  2、if [not] exist [路径\]文件名 待执行的命令
  如果有指定的文件,则条件成立,运行命令,否则运行下一句。
  如: if exist c:\config.sys type c:\config.sys
  表示如果存在c:\config.sys文件,则显示它的内容。
  ****** willsort 编注 ********
  也可以使用以下的用法:
  if exist command
  device 是指DOS系统中已加载的设备, 在win98下通常有:
  AUX, PRN, CON, NUL
  COM1, COM2, COM3, COM4
  LPT1, LPT2, LPT3, LPT4
  XMSXXXX0, EMMXXXX0
  A: B: C: ...,
  CLOCK$, CONFIG$, DblBuff$, IFS$HLP$
  具体的内容会因硬软件环境的不同而略有差异, 使用这些设备名称时, 需要保证以下三点:
  1. 该设备确实存在(由软件虚拟的设备除外)
  2. 该设备驱动程序已加载(aux, prn等标准设备由系统缺省定义)
  3. 该设备已准备好(主要是指a: b: ..., com1..., lpt1...等)
  可通过命令 mem/d | find "device" /i 来检阅你的系统中所加载的设备
  另外, 在DOS系统中, 设备也被认为是一种特殊的文件, 而文件也可以称作字符设备; 因为设备(device)与文件都是使用句柄(handle)来管理的, 句柄就是名字, 类似于文件名, 只不过句柄不是应用于磁盘管理, 而是应用于内存管理而已, 所谓设备加载也即指在内存中为其分配可引用的句柄.
  ==================================
  3、if errorlevel <数字> 待执行的命令
  很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。
  如if errorlevel 2 goto x2
  ==== willsort 编注 ===========
  返回值从大到小的顺序排列不是必须的, 而只是执行命令为 goto 时的习惯用法, 当使用 set 作为执行命令时, 通常会从小到大顺序排列, 比如需将返回码置入环境变量, 就需使用以下的顺序形式:
  if errorlevel 1 set el=1
  if errorlevel 2 set el=2
  if errorlevel 3 set el=3
  if errorlevel 4 set el=4
  if errorlevel 5 set el=5
  ...
  当然, 也可以使用以下循环来替代, 原理是一致的:
  for %%e in (1 2 3 4 5 6 7 8...) do if errorlevel %%e set el=%%e
  更高效简洁的用法, 可以参考我写的另一篇关于获取 errorlevel 的文章
  出现此种现象的原因是, if errorlevel 比较返回码的判断条件并非等于, 而是大于等于. 由于 goto 的跳转特性, 由小到大排序会导致在较小的返回码处就跳出; 而由于 set命令的 "重复" 赋值特性, 由大到小排序会导致较小的返回码 "覆盖" 较大的返回码.
  另外, 虽然 if errorlevel=<数字> command 也是有效的命令行, 但也只是 command.com 解释命令行时将 = 作为命令行切分符而忽略掉罢了

[收藏] [推荐] [评论(0条)] [返回顶部] [打印本页] [关闭窗口]  
用户名: 新注册) 密码: 匿名评论
评论内容:(不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。
 §最新评论:
  热点文章
·主板跳线连接方法详解(4)
·DOS命令大全
·主板跳线连接方法详解(1)
·超级兔子魔法设置使用技巧大全(7
·主板跳线连接方法详解(2)
·ETL工具介绍
·手工破解php网站
·主板跳线连接方法详解(3)
·玩转电脑技巧大全(0)
·主板跳线连接方法详解(5)
·图解手把手教您装电脑(6)
·主板跳线连接方法详解(7)
  相关文章
·BAT教程全集(3)
·BAT教程全集(5)
·BAT教程全集(2)
·BAT教程全集(6)
·BAT教程全集(1)
·BAT教程全集(7)
·BAT教程全集(8)
·BAT教程全集(9)
·BAT教程全集(10)
·BAT教程全集(11)
·BAT教程全集(12)
·BAT教程全集(13)
  兴趣话题
·
·
·全国地图服务
网站为ZQF个人所有 Power by DedeCms 所有文章来自网络,如有冒犯,请email 或 qq告之,谢谢