版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、BAT批处理文件语法 1 2 转载BAT批处理文件语法(1-2)(转载)2011/06/12 10:55遗憾的是,win9x和DOS下均不支持shift的逆操作.只有在nt内核命令行环境下,shift才支持/n参数,可以以第一参数为基准返复移动起始指针.特殊命令if goto choice for是批处理文件中比较高级的命令,如果这几个你用得很熟练,你就是批处理文件的专家啦。一、if是条件语句,用来判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:1、ifnot参数=字符串待执行的命令参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。例:if%1
2、=aformat a:=if的命令行帮助中关于此点的描述为:IFNOTstring1=string2 command在此有以下几点需要注意:1.包含字符串的双引号不是语法所必须的,而只是习惯上使用的一种防空字符2.string1未必是参数,它也可以是环境变量,循环变量以及其他字符串常量或变量3.command不是语法所必须的,string2后跟一个空格就可以构成一个有效的命令行=2、ifnotexist路径文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。如:if exist c:config.sys type c:config.sys表示如果存在c:config.sy
3、s文件,则显示它的内容。*注*也可以使用以下的用法: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
4、:.,com1.,lpt1.等)可通过命令mem/d|finddevice/i来检阅你的系统中所加载的设备另外,在DOS系统中,设备也被认为是一种特殊的文件,而文件也可以称作字符设备;因为设备(device)与文件都是使用句柄(handle)来管理的,句柄就是名字,类似于文件名,只不过句柄不是应用于磁盘管理,而是应用于内存管理而已,所谓设备加载也即指在内存中为其分配可引用的句柄.=3、if errorlevel数字待执行的命令很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令
5、(返回值必须按照从大到小的顺序排列)。如果返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。如if errorlevel 2goto x2=注=返回值从大到小的顺序排列不是必须的,而只是执行命令为goto时的习惯用法,当使用set作为执行命令时,通常会从小到大顺序排列,比如需将返回码置入环境变量,就需使用以下的顺序形式:if errorlevel 1set el=1 if errorlevel 2set el=2 if errorlevel 3set el=3 if errorlevel 4set el=4 if errorlevel 5set el=5当然,也可以使用以下循环来替代
6、,原理是一致的:for%e in(1 23 45 67 8.)do if errorlevel%e set el=%e更高效简洁的用法,可以参考我写的另一篇关于获取errorlevel的文章出现此种现象的原因是,if errorlevel比较返回码的判断条件并非等于,而是大于等于.由于goto的跳转特性,由小到大排序会导致在较小的返回码处就跳出;而由于set命令的重复赋值特性,由大到小排序会导致较小的返回码覆盖较大的返回码.另外,虽然if errorlevel=数字command也是有效的命令行,但也只是解释命令行时将=作为命令行切分符而忽略掉罢了=二、goto批处理文件
7、运行到这里将跳到goto所指定的标号(标号即label,标号用:后跟标准字符串来定义)处,goto语句一般与if配合使用,根据不同的条件来执行不同的命令组。如:goto end:end echo this is the end标号用:字符串来定义,标号所在行不被执行。=编注label常被译为标签,但是这并不具有广泛的约定性.goto与:联用可实现执行中途的跳转,再结合if可实现执行过程的条件分支,多个if即可实现命令的分组,类似C中switch case结构或者Basic中的select case结构,大规模且结构化的命令分组即可实现高级语言中的函数功能.以下是批处理和C/Basic在语法结构
8、上的对照:Batch C/Basic goto&:goto&:goto&:&if if&else/if&elseif&endif goto&:&if.switch&case/select case goto&:&if&set&envar.function()/function(),sub()=三、choice使用此命令可以让用户输入一个字符(用于选择),从而根据用户的选择返回不同的errorlevel,然后于if errorlevel配合,根据用户的选择运行不同的命令。注意:choice命令为DOS或者Windows系统提供的外部命令,不同版本的choice命令语法会稍有不同,请用choice
9、/?查看用法。choice的命令语法(该语法为Windows 2003中choice命令的语法,其它版本的choice的命令语法与此大同小异):CHOICE/C choices/N/CS/T timeout/D choice/M text描述:该工具允许用户从选择列表选择一个项目并返回所选项目的索引。参数列表:/C choices指定要创建的选项列表。默认列表是YN。/N在提示符中隐藏选项列表。提示前面的消息得到显示,选项依旧处于启用状态。/CS允许选择分大小写的选项。在默认情况下,这个工具是不分大小写的。/T timeout做出默认选择之前,暂停的秒数。可接受的值是从0到9999。如果指定了
10、0,就不会有暂停,默认选项会得到选择。/D choice在nnnn秒之后指定默认选项。字符必须在用/C选项指定的一组选择中;同时,必须用/T指定nnnn。/M text指定提示之前要显示的消息。如果没有指定,工具只显示提示。/?显示帮助消息。ERRORLEVEL环境变量被设置为从选择集选择的键索引。列出的第一个选择返回1,第二个选择返回2,等等。如果用户按的键不是有效的选择,该工具会发出警告响声。如果该工具检测到错误状态,它会返回255的ERRORLEVEL值。如果用户按Ctrl+Break或Ctrl+C键,该工具会返回0的ERRORLEVEL值。在一个批程序中使用ERRORLEVEL参数时,
11、将参数降序排列。示例:CHOICE/?CHOICE/C YNC/M确认请按Y,否请按N,或者取消请按C。CHOICE/T 10/C ync/CS/D yCHOICE/C ab/M选项1请选择a,选项2请选择b。CHOICE/C ab/N/M选项1请选择a,选项2请选择b。=编注=我列出win98下choice的用法帮助,已资区分Waits for the user to choose one of aset of choices.等待用户选择一组待选字符中的一个CHOICE/C:choices/N/S/T:c,nntext/C:choices Specifies allowable keys.
12、Default is YN指定允许的按键(待选字符),默认为YN/N Do not display choices and?at end of prompt string.不显示提示字符串中的问号和待选字符/S Treat choice keys as case sensitive.处理待选字符时大小写敏感/T:c,nn Default choice to cafter nn seconds在nn秒后默认选择c text Prompt string to display要显示的提示字符串ERRORLEVEL is set to offset of key user presses in cho
13、ices.ERRORLEVEL被设置为用户键入的字符在待选字符中的偏移值如果我运行命令:CHOICE/C YNC/M确认请按Y,否请按N,或者取消请按C。屏幕上会显示:确认请按Y,否请按N,或者取消请按C。Y,N,C?例:test.bat的内容如下(注意,用if errorlevel判断返回值时,要按返回值从高到低排列):echo off choice/C dme/Mdefrag,mem,endif errorlevel 3goto end if errorlevel 2goto mem if errorlevel 1goto defrag:defrag c:dosdefrag goto en
14、d:mem mem goto end:end echo good bye此批处理运行后,将显示defrag,mem,endD,M,E?,用户可选择d me,然后if语句根据用户的选择作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以goto end将程序跳到end标号处,然后程序将显示good bye,批处理运行结束。四、for循环命令,只要条件符合,它将多次执行同一命令。语法:对一组文件中的每一个文件执行某个特定命令。FOR%variable IN(set)DO commandcommand-parameters
15、%variable指定一个单一字母可替换的参数。(set)指定一个或一组文件。可以使用通配符。command指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。例如一个批处理文件中有一行:for%c in(*.bat*.txt)do type%c则该命令行会显示当前目录下所有以bat和txt为扩展名的文件的内容。=编注=需要指出的是,当()中的字符串并非单个或多个文件名时,它将单纯被当作字符串替换,这个特性再加上()中可以嵌入多个字符串的特性,很明显for可以被看作一种遍历型循环.当然,在nt/2000/xp/2003系列的命令行环境中,for被赋予了
16、更多的特性,使之可以分析命令输出或者文件中的字符串,也有很多开关被用于扩展了文件替换功能.=批处理示例1.IF-EXIST 1)首先用记事本在C:建立一个test1.bat批处理文件,文件内容如下:echo off IF EXISTAUTOEXEC.BAT TYPEAUTOEXEC.BAT IF NOT EXISTAUTOEXEC.BAT ECHOAUTOEXEC.BAT does not exist然后运行它:C:TEST1.BAT如果C:存在AUTOEXEC.BAT文件,那么它的内容就会被显示出来,如果不存在,批处理就会提示你该文件不存在。2)接着再建立一个test2.bat文件,内容如下
17、:ECHO OFF IF EXIST%1 TYPE%1 IF NOT EXIST%1 ECHO%1 does not exist执行:C:TEST2 AUTOEXEC.BAT该命令运行结果同上。说明:(1)IF EXIST是用来测试文件是否存在的,格式为IF EXIST路径+文件名命令(2)test2.bat文件中的%1是参数,DOS允许传递9个批参数信息给批处理文件,分别为%1%9(%0表示test2命令本身),这有点象编程中的实参和形参的关系,%1是形参,AUTOEXEC.BAT是实参。=willsort编注=DOS没有允许传递9个批参数信息的限制,参数的个数只会受到命令行长度和所调用命令
18、处理能力的限制.但是,我们在批处理程序中,在同一时刻只能同时引用10个参数,因为DOS只给出了%0%9这十个参数引用符.=3)更进一步的,建立一个名为TEST3.BAT的文件,内容如下:echo off IF%1=AECHO XIAO IF%2=BECHO TIAN IF%3=CECHO XIN如果运行:C:TEST3 AB C屏幕上会显示:XIAO TIAN XIN如果运行:C:TEST3 AB屏幕上会显示XIAO TIAN在这个命令执行过程中,DOS会将一个空字符串指定给参数%3。2、IF-ERRORLEVEL建立TEST4.BAT,内容如下:ECHO OFF XCOPY C:AUTOEX
19、EC.BAT D:IF ERRORLEVEL 1ECHO文件拷贝失败IF ERRORLEVEL 0ECHO成功拷贝文件然后执行文件:C:TEST4如果文件拷贝成功,屏幕就会显示成功拷贝文件,否则就会显示文件拷贝失败。IF ERRORLEVEL是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。因此下面的批处理文件是错误的:ECHO OFF XCOPY C:AUTOEXEC.BAT D:IF ERRORLEVEL 0ECHO成功拷贝文件IF ERRORLEVEL 1ECHO未找到拷贝文件IF ERRORLEVEL 2ECHO用户通过ctr
20、l-c中止拷贝操作IF ERRORLEVEL 3ECHO预置错误阻止文件拷贝操作IF ERRORLEVEL 4ECHO拷贝过程中写盘错误无论拷贝是否成功,后面的:未找到拷贝文件用户通过ctrl-c中止拷贝操作预置错误阻止文件拷贝操作拷贝过程中写盘错误都将显示出来。以下就是几个常用命令的返回值及其代表的意义:backup 0备份成功1未找到备份文件2文件共享冲突阻止备份完成3用户用ctrl-c中止备份4由于致命的错误使备份操作中止diskcomp 0盘比较相同1盘比较不同2用户通过ctrl-c中止比较操作3由于致命的错误使比较操作中止4预置错误中止比较diskcopy 0盘拷贝操作成功1非致命盘
21、读/写错2用户通过ctrl-c结束拷贝操作3因致命的处理错误使盘拷贝中止4预置错误阻止拷贝操作format 0格式化成功3用户通过ctrl-c中止格式化处理4因致命的处理错误使格式化中止5在提示proceed with format(y/n)?下用户键入n结束xcopy 0成功拷贝文件1未找到拷贝文件2用户通过ctrl-c中止拷贝操作4预置错误阻止文件拷贝操作5拷贝过程中写盘错误chkdsk 0未找到错误255找到一个或多个错误choice 0用户按下ctrl+c/break 1用户按下第一个键255检测到命令行中的错误条件其它用户按下的有效字符在列表中的位置defrag 0碎片压缩成功1出现
22、内部错误2磁盘上没有空簇。要运行DEFRAG,至少要有一个空簇3用户用Ctrl+C退出了DEFRAG 4出现一般性错误5 DEFRAG在读簇时遇到错误6 DEFRAG在写簇时遇到错误7分配空间有错8内存错9没有足够空间来压缩磁盘碎片deltree 0成功地删除一个目录diskcomp 0两盘相同1发现不同2按CTRL+C终止了比较3出现严重错误4出现初始化错误find 0查找成功且至少找到了一个匹配的字符串1查找成功但没找到匹配的字符串2查找中出现了错误keyb 0键盘定义文件装入成功1使用了非法的键盘代码,字符集或语法2键盘定义文件坏或未找到4键盘、监视器通讯时出错5要求的字符集未准备好mo
23、ve 0成功地移动了指定的文件1发生了错误msav/N 86检查到了病毒replace 0REPLACE成功地替换或加入了文件1 MS-DOS版本和REPLACE不兼容2 REPLACE找不到源文件3 REPLACE找不到源路径或目标路径5不能存取要替换的文件8内存不够无法执行REPLACE 11命令行句法错误restore 0RESTORE成功地恢复了文件1 RESTORE找不到要恢复的文件3用户按CTRL+C终止恢复过程4 RESTORE因错误而终止scandisk 0ScanDisk在它检查的驱动器上未检测到任何错误1由于命令行的语法不对,不能运行ScanDisk 2由于内存用尽或发生内部错误,ScanDisk意外终止3用户让ScanDisk中途退出4进行盘面扫描时,用户决定提前退出254 ScanDisk找到磁盘故障并已全部校正255 ScanDisk找到磁盘故障,但未能全部校正setver 0SETVER成功地完成了任务1用户指定了一个无效的命令开关2用户指定了一个非法的文件名3没有足够的系统内存来运行命令4用户指定了一个非法的版本号格式5 SETVER在版本表中未找到指定的项6 SETVER未找到SETVER.EXE文件7用户指定了一个非法的驱动器8用户指定了太多的命令行参数9 SETVER检测
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026湖北恩施州来凤县绿水镇中心幼儿园带班教师1名备考题库及完整答案详解(夺冠系列)
- 2026江西工业职业技术学院图书管理员岗位招聘1人备考题库附答案详解【能力提升】
- 2026河北邯郸市中西医结合医院选聘22人备考题库及参考答案详解(综合题)
- 2026福建莆田城厢法院招聘3人备考题库及参考答案详解(能力提升)
- 2026安徽黄山市屯溪区人民医院招聘编外紧缺人才备考题库及参考答案详解(夺分金卷)
- 2026贵州贵阳观山湖中学招聘中小学教师备考题库及参考答案详解(巩固)
- 知识型员工流动与企业绩效
- 2026甘肃平凉华亭市中医医院招聘9人备考题库及完整答案详解【易错题】
- 2026北京师范大学实验小学教师及实习生招聘备考题库附完整答案详解【典优】
- 2026中国美术学院特殊专业技术岗位招聘19人备考题库(浙江)含答案详解(达标题)
- 机场安全生产培训内容课件
- 2026内蒙古事业单位第一阶段改报岗位(公共基础知识)测试题附答案
- 2026年二级建造师之二建公路工程实务考试题库500道带答案(b卷)
- 公安交通集成指挥平台操作手册(扩充版)
- 2026年淮南联合大学单招职业技能考试题库参考答案详解
- DB1307∕T455-2024 谷子品种 张杂谷13号
- 自愿放弃赡养权协议书
- 备战2026年高考数学考试易错题(新高考)专题14 排列组合与二项式定理(解析版)
- 高速公路服务区物业服务方案
- 2025纸箱厂劳动合同模板
- 《陆上风力发电机组钢混塔架施工与质量验收规范》
评论
0/150
提交评论