快速业务通道

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 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号