BAT批处理编辑详解,对一个喜欢批处理绝对有用BAT批处理编辑详解第一节(批处理基础)按照惯例,先讲一下什么是批处理.顾名思义,批处理就是把一批或者说是一条条命令放在一个文本里,然后批量执行!执行这一批命令的文件的扩展名是BAT或者CMD,把任何一批命令放入在有这样扩展名的文件里,执行时里面的命令就会一条条的执行完,当然我们还可以在其中加入一些逻辑判断的语句,让里面的命令在满足一定条件时执行指定的命令.了解了大概意思后,我们正式开始学习.先看一个简单的例子!@echooffecho欢迎来到非常BAT!pause把上面的3条命令保存为test.bat或者test.cmd然后执行,他就会在屏幕上显示二行话:欢迎来到非常BAT!请按任意键继续...这就是一个简单批处理文件了,我们来分析一下.这个批处理文件一共就用了2条命令echo和pause还有一个特殊符号@@符号在批处理中的作用是关闭当前行命令的回显,也就是不显示执行的是什么命令,只显示命令的结果!你可以执行下面这个批处理文件来理解,保存为*.bat或者*.CMD@echo你好echo你好@pauseecho命令的作用有两个,一个是在CMD上回显一行内容.如:echo欢迎来到非常BAT!,还一个是关闭命令的回显:echooffechooff的作用就相当于在每条命令前面加一个@符号,这样所有的命令将只会显示结果不显示命令.我们在echooff这命令前加一个@符号是为了不让echooff这条命令本身显示出来,让批处理更完美!pause命令就是暂停的意思,防止批处理执行完后直接退出!执行pause命令后会自动在CMD里显示请按任意键继续...这样一行话!从上面这个简单的批处理中,我们可以发现其实批处理就是运用一些含有特殊意义的符号和一些完成指定功能的命令组合而成,那么在批处理中有多少这样的特殊符号和功能命令呢?我们现在就来仔细了解一下一些最常用的!(以下内容来源网络,请各位仔细阅读,好进入下节的实例说明)批处理的常见命令REMECHOGOTOCALLPAUSEIF还有(FOR,SETLOCAL,SHIFT)这几个命令比较难,不适合写在基础篇,以后说明!批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT。这些命令统称批处理命令。介绍命令1、REMREM是个注释命令,一般用来给程序加上注解,该命令后的内容在程序执行时,将不会被显示和执行。例:REM这个命令就是注释这一句将不会被执行2、ECHOECHO是一个回显命令,主要参数有OFF和ON。一般用ECHOMESSAGE来显示一个特定的消息。例:EchooffRem以上代表关闭回显(就是不显示所执行的命令)Echo这个就是消息(message)Rem以上代表显示“这就是消息(message)”这列字符咱们来看看执行结果:3、GOTOGOTO会点编程的朋友就会知道这是跳转的意思。在批处理中允许以“:XXX”来构建一个标号,然后用GOTOXXX直接来执行标号后的命令。例::lableREM上面就是名为LABEL的标号DIRC:\DIRD:\GOTOlableREM以上程序跳转标号LABEL处继续执行咱们来看看结果4、CALLCALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理例:创建一个2.BAT,内容如下ECHO这就是2的内容创建一个1.BAT,内容如下ECHO这是1的内容CALL2.BATECHO1和2的内容全部显示完成。执行1.BAT,来看看结果:5、PAUSEPAUSE,玩游戏的人都知道,暂停的意思在这里就是停止系统命令的执行并显示下面的内容。例:PAUSE6、IFIF条件判断语句,语法格式如下:IF[NOT]ERRORLEVELnumbercommandIF[NOT]string1==string2commandIF[NOT]EXISTfilenamecommand解释下:[NOT]:将返回结果取反值,就是“如果没有”的意思ERRORLEVEL:是命令执行完成后返回的退出值Number:退出值的数字取值范围0~255,判断时值的排列顺序应该由大到小。返回的值大于等于指定的值时,条件成立string1==string2:string1和string2都为字符的数据,英文内字符的大小写将看作不同,这个条件中的等于号必须是两个(绝对相等的意思)条件相等后即执行后面的commandEXISTfilename:为文件或目录存在的意思IFERRORLEVEL这个句子必须放在某一个命令的后面,执行命令后由IFERRORLEVEL来判断命令的返回值。例:(1)IF[NOT]ERRORLEVELnumbercommand检测命令执行完后的返回值做出判断echooffdirz:rem如果退出代码为1(不成功)就跳至标题1处执行IFERRORLEVEL1goto1REM如果退出代码为0(成功)就跳至标题0处执行IFERRORLEVEL0goto0:0echo命令执行成功!Rem程序执行完毕跳至标题exit处退出gotoexit:1echo命令执行失败!Rem程序执行完毕跳至标题exit处退出gotoexit:exitRem这里是程序的出口批处理文件制作教程批处理文件是无格式的文本文件,现在无盘清理基本都是靠它实现的因为简单实用下面就是方便大家怎样创建批处理文件的一简单批处理内部命令简介1.Echo命令打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo命令将显示当前回显设置。语法echo[{on|off}][message]Sample:@echooff/echohelloworld在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用^)结合来实现输入一些命令到特定格式的文件中.这将在以后的例子中体现出来。2.@命令表示不显示@后面的命令,在入侵过程中(例如使用批处理来格式化敌人的硬盘)自然不能让对方看到你使用的命令啦。Sample:@echooff@echoNowinitializingtheprogram,pleasewaitaminite...@formatX:/q/u/autoset(format这个命令是不可以使用/y这个参数的,可喜的是微软留了个autoset这个参数给我们,效果和/y是一样的。)3.Goto命令指定跳转到标签,找到标签后,程序将处理从下一行开始的命令。语法:gotolabel(label是参数,指定所要转向的批处理程序中的行。)Sample:if{%1}=={}gotonoparmsif{%2}=={}gotonoparms(如果这里的if、%1、%2你不明白的话,先跳过去,后面会有详细的解释。)@Remcheckparametersifnullshowusage:noparmsechoUsage:monitor.batServerIPPortNumbergotoend标签的名字可以随便起,但是最好是有意义的字母啦,字母前加个:用来表示这个字母是标签,goto命令就是根据这个:来寻找下一步跳到到那里。最好有一些说明这样你别人看起来才会理解你的意图啊。4.Rem命令注释命令,在C语言中相当与/*--------*/,它并不会被执行,只是起一个注释的作用,便于别人阅读和你自己日后修改。RemMessageSample:@RemHereisthedescription.5.Pause命令运行Pause命令时,将显示下面的消息:Pressanykeytocontinue...Sample:@echooff:begincopya:*.*d:\\backechoPleaseputanewdiskintodriverApausegotobegin在这个例子中,驱动器A中磁盘上的所有文件均复制到d:\\back中。显示的注释提示您将另一张磁盘放入驱动器A时,pause命令会使程序挂起,以便您更换磁盘,然后按任意键继续处理。6.Call命令从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。call命令接受用作调用目标的标签。如果在脚本或批处理文件外使用Call,它将不会在命令行起作用。语法call[[Drive:][Path]FileName[BatchParameters]][:label[arguments]]参数[Drive:}[Path]FileName指定要调用的批处理程序的位置和名称。filename参数必须具有.bat或.cmd扩展名。7.start命令调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用。入侵常用参数:MIN开始时窗口最小化SEPARATE在分开的空间内开始16位Windows程序HIGH在HIGH优先级类别开始应用程序REALTIME在REALTIME优先级类别开始应用程序WAIT启动应用程序并等候它结束parameters这些为传送到命令/程序的参数执行的应用程序是32-位GUI应用程序时,CMD.EXE不等应用程序终止就返回命令提示。如果在命令脚本内执行,该新行为则不会发生。8.choice命令choice使用此命令可以让用户输入一个字符,从而运行不同的命令。使用时应该加/c:参数,c:后应写提示可输入的字符,之间无空格。它的返回码为1234……如:choice/c:dmedefrag,mem,end将显示defrag,mem,end[D,M,E]?Sample:Sample.bat的内容如下:@echooffchoice/c:dmedefrag,mem,endiferrorlevel3gotodefrag(应先判断数值最高的错误码)iferrorlevel2gotomemiferrotlevel1gotoend:defragc:\\dos\\defraggotoend:memmemgotoend:endechogoodbye此文件运行后,将显示defrag,mem,end[D,M,E]?用户可选择dme,然后if语句将作出判断,d表示执行标号为defrag的程序段,m表示执行标号为mem的程序段,e表示执行标号为end的程序段,每个程序段最后都以gotoend将程序跳到end标号处,然后程序将显示goodbye,文件结束。9.If命令if表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:1、if参数==字符串待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句。(注意是两个等号)如if%1==aformata:if{%1}=={}gotonoparmsif{%2}=={}gotonoparms2、ifexist文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句。如ifexistconfig.syseditconfig.sys3、iferrorlevel/ifnoterrorlevel数字待执行的命令如果返回码等于指定的数字,则条件成立,运行命令,否则运行下一句。如iferrorlevel2gotox2DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为0、1。10.for命令for命令是一个比较复杂的命令,主要用于参数在指定的范围内循环执行命令。在批处理文件中使用FOR命令时,指定变量请使用%%variablefor{%variable|%%variable}in(set)docommand[CommandLineOptions]%variable指定一个单一字母可替换的参数。(set)指定一个或一组文件。可以使用通配符。command指定对每个文件执行的命令。command-parameters为特定命令指定参数或命令行开关。在批处理文件中使用FOR命令时,指定变量请使用%%variable而不要用%variable。变量名称是区分大小写的,所以%i不同于%I如果命令扩展名被启用,下列额外的FOR命令格式会受到支持:FOR/D