BAT批处理文件语法第1/2页
作者 佚名
来源 批处理
浏览
发布时间 2013-07-09
1.包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种"防空"字符 2.string1未必是参数,它也可以是环境变量,循环变量以及其他字符串常量或变量 3.command不是语法所必须的,string2后跟一个空格就可以构成一个有效的命令行 ============================= 2、if[not]exist[路径\]文件名待执行的命令 如果有指定的文件,则条件成立,运行命令,否则运行下一句。 如:ifexistc:\config.systypec:\config.sys 表示如果存在c:\config.sys文件,则显示它的内容。 ******注******** 也可以使用以下的用法: ifexistcommand 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、iferrorlevel<数字>待执行的命令 很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过iferrorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。 如iferrorlevel2gotox2 ====注=========== 返回值从大到小的顺序排列不是必须的,而只是执行命令为goto时的习惯用法,当使用set作为执行命令时,通常会从小到大顺序排列,比如需将返回码置入环境变量,就需使用以下的顺序形式: iferrorlevel1setel=1 iferrorlevel2setel=2 iferrorlevel3setel=3 iferrorlevel4setel=4 iferrorlevel5setel=5 ... 当然,也可以使用以下循环来替代,原理是一致的: for%%ein(12345678...)doiferrorlevel%%esetel=%%e 更高效简洁的用法,可以参考我写的另一篇关于获取errorlevel的文章 出现此种现象的原因是,iferrorlevel比较返回码的判断条件并非等于,而是大于等于.由于goto的跳转特性,由小到大排序会导致在较小的返回码处就跳出;而由于set命令的"重复"赋值特性,由大到小排序会导致较小的返回码"覆盖"较大的返回码. 另外,虽然iferrorlevel=<数字>command也是有效的命令行,但也只是command.com解释命令行时将=作为命令行切分符而忽略掉罢了 =========================== 二、goto批处理文件运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。 如: gotoend :end echothisistheend 标号用":字符串"来定义,标号所在行不被执行。 ====willsort编注 label常被译为"标签",但是这并不具有广泛的约定性. goto与:联用可实现执行中途的跳转,再结合if可实现执行过程的条件分支,多个if即可实现命令的分组,类似C中switchcase结构或者Basic中的selectcase结构,大规模且结构化的命令分组即可实现高级语言中的函数功能.以下是批处理和C/Basic在语法结构上的对照: BatchC/Basic goto&:goto&: goto&:&ifif{}&else{}/if&elseif&endif goto&:&if...switch&case/selectcase goto&:&if&set&envar...fu |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |
你可能对下面的文章感兴趣
上一篇: 用批处理实现电脑自动关机下一篇: G8.3做的GHO G8.3不识别的问题的完美解决方案!
关于BAT批处理文件语法第1/2页的所有评论