批处理文件内幕

1、什么叫作批处理文件?  批处理文件(文件名为*.BAT)就是将一些经常使用的命令写入一个文本文件内。当咱们要使用这个文件时,只要键入批处理文件的文件名,批处理文件就会依照文件中的命令来执行所有或者是一部分指定要执行命令。如此咱们即可简化咱们的工做,而不用每一次都须要手动键入不少的命令来执行一些动做。  一个批处理文件的创建,由于必须是一个文本文件;因此只要有字处理功能的软件,均可用来创建此文本文件,例如EDIT,WORDSTAR,PE2……等程序皆可。  2、什么是自动批处理?  自动批处理文件(AUTOEXEC.BAT),是批处理文件的一种,处于引导盘(通常为C盘或A盘)的根目录下,当每一次开机时,系统将自动到引导盘的根目录下查找它,若是找到了就自动执行它。  3、批处理文件中可使用哪些命令?  只要可以在DOS的系统提示符下执行的命令,或应用软件执行文件名称,都能写在批处理文件中,批处理命令也可包含在内,详细以下:  1.DOS的内部命令  2.DOS的外部命令  3.COM的命令文件  4.EXE的可执行文件  5.批文件命令:CALL,ECHO,FOR,GOTO,IF,PAUSE,REM,SHIFT  6.其余的批文件  4、批处理文件命令  BATCH DOS 命令1.功能: 批处理命令是存储在一个特殊的批处理文件(Batch File)中的DOS命令。当执行一个批处理文件时,DOS将依次执行文件内所存储的各项DOS命令。  2.格式:[d:][path][filename.bat][parameters]  3.说明: ①、批处理文件的扩展名应为.BAT。  ②、当执行批处理文件时,您可将参数(parameters)传给一名称为file-name.bat的文件,给予不一样的参数,将能够执行相似的工做。  ③、若是要中止批处理文件的动做,只要按下ctrl+break二键,便可中止正在执行的命令,而且出现下述信息:  terminate batch job?(Y/N)  若是按下Y键就能够终止批处理文件的执行工做。若是按N键,那系统将会继续执行其它的批处理文件中的命令。  4.范例: ①、若是在test.bat文件内包括一些替换参数,将使得在执行时,可使用您所提供的值来替换它。例如:  copy %1.mac %2.mac  type %2.prn  type %0.bat  %0,%1,%2这三个能够被代换的参数,于执行时将使用批处理文件时的三个参数顺序依次来代换之。  %0参数永远使用批处理文件的文件名来取代。  在一个批处理文件内最多可使用10个替换参数(%0到%9)  ②、当您要执行test.bat的批处理文件时,系统将依照%1,%2等顺序给予适当的参数。例如:  A:\>test a:prog1 b:prog2  因而系统将以test表明%0,以a:\prog1表明%1,以b:\prog2表明%2所以在执行此命令时,就至关于直接在键盘上依次输入下述DOS命令同样:  copy a:\prog1.mac b:\prog2.mac  type b:\prog2.prn  typt test.bat  ③、批处理文件亦可以使用DOS的环境变量。环境变量于使用时先后都要加上一个%符号。例如要取用DOS PATH的值,您必需输入%PATH%。下例是先假设将变量destination定义为一台磁盘驱动器代码:  SET destination=C:因而执行如下所述命令  ECHO dot here>%destination%FILE1 (必须在批处理文件中执行)  执行以后,C磁盘的file1文件内将会存在dot here字符串。  CALL 批处理文件命令1.功能: 您能够在批处理文件里面调用令一个批处理文件,执行完毕后在继续执行原来的这个批处理文件内的剩余命令。  2.格式:CALL[d:][path][filename.bat][argument]  3.说明: ①、[argument]参数:指定经由批处理文件所要求的任何命令行信息;它可包含开关选择项、文件指定、变量%1至%9以及其它像%baud%这样的变量。  ②、CALL命令能够在批处理文件的任何位置,只要执行时不要超过内存容量便可。  ③、批处理文件也能够调用本身自己,但必须肯定最后仍能够结束才好。  ④、CALL命令不能够与重定向输入字符(如:<)以及数据管道字符(如:|)合用。  4.范例: ①、现有main.bat批处理文件内容以下所述:  REM I am ist batch file  REM go to 2nd batch file  CALL a2  REM now come back!  REM END  ②、其中A2.bat批处理文件内容以下所述:  REM I am 2nd batch file  REM I will back to main batch file  ③、执行时  A:\>main (执行main.bat)  A:\>REM I am ist batch file (main.bat前两行)  A:\>REM go 2nd batch file  A:\>CALL A2 (由main.bat中调用a2.bat)  A:\>REM I am 2nd batch file (执行a2.bat文件的内容)  A:\>REM I will back to main batch file  A:\>REM now come back! (a2.bat结束后返回main.bat  A:\>REM END 继续执行其他命令)  CHOICE选择键组命令 批处理文件命令1.功能: 此命令将显示指定的提示并暂停让用户在指定的键组中作选择,而后返回一个ERRORLEVEL参数给批处理程序。您只能在批处理程序中使用本命令。  2.格式:[d:][path]CHOICE[/C[:]KEYS][/N][/S][/T[:]C'nn][test]  3.说明: ①、/C[:]keys参数:在提示中指定容许可用的键。当显示时,keys将以逗黠分开并放置于括弧中,并且其后将会加上问号。若是您并没有指定/C参数,则CHOICE将会使用YN来当作默认值。冒号(:)是无关紧要的。  ②、/N参数:使CHOICE不显示提示,可是提示前的文字仍会显示。若是您指定此参数,则指定键仍然有效。  ③、/S参数:将致使CHOICE会区分大小写。若是此参数未被指定,则CHOICE将接受用户指定的任意键值的大写或小写。  ④、/T[:]C'nn参数:在默认指定键以前,使CHOICE在指定的秒数中暂停。/T参数可用的值以下所示:  c---nn秒后,指定的字符将为默认的。字符必须是/c参数中所指定的选择组。  nn--指定暂停的秒数。可接受0到99之间。若是指定0,则在默认以前将不会有暂停。  ⑤、[test]参数:您想在提示符前显示的字符。假如您包含斜线(\)作为提示前字符的一部分时,则必须加引号。若是您并没有提示字符,则CHOICE将仅显示提示符。您所分派的第一个键将为1,第二个键将为2……余此类推。若是用户按下了一个未分派到的键,则CHOICE将发出一警告声响。若是CHOICE检测到一个错误的状况,那么它将返回一ERRORLEVEL值为255的值;若是使用者按下了Crtl+Break二键或Ctrl+c二键,则CHOICE将返回一ERRORLEVEL值为0的值。  四、范例: 这个CHIOCE命令最有用的地方就是用在批处理文件设计中。它将让用户按下指定的按键后,执行某一段在批处理文件中的命令。例如:下面是包含CHOICE命令的TEST.BAT文件内容:  @echo off  cls  echo. ┐  echo 1.defragment │  echo 2.MSD ├?显示这些字符  echo 3.Anti-Virus │  echo. ┘  choice/c:123/t:1,10 将出现要您选择1或者2或者3的提示字符,若是等10秒后,用户还没有键入1或2或3中任一字符,则自动键入1。  if errorlevel 1 goto defragmant 当用户在上述键入1时,将寻找:defragment段来执行defrag程序。  if errorlevel 2 goto msd 当用户在上述键入2时,将寻找:msd段来执行msd程序。  if errorlevel 3 goto av 当用户到上述键入3时,将寻找:av段来执行msav程序。  :defragment ┐  defrag ├:defragment段  goto end ┘  :msd ┐  msd ├:msd段  goto end ┘  :av ┐  msav ├:av段  goto end ┘  :end 结束  ECHO 批处理文件命令1.功能: 容许批处理文件执行时显示或不显示命令自己,但对于命令的执行则无影响。  2.格式:ECHO [on|off]  ECHO [message]  3.说明: ①、ECHO命令在启动或系统重置时,均默认为on,而可将每一批处理命令在执行同时,显示在输出设备(屏幕)上。  ②、当ECHO命令设定为off时在批处理命令执行时,将不显示该命令内容,但不影响执行结果。  ③、若是您指定了ECHO message,则不管是ECHO on 或ECHO off,message信息皆会显示在标准输出设备(屏幕)上。  ④、若是ECHO后面未加任何字符,如on、off或message,则只会显示出ECHO当前是在on或off的状态。  4.范例:  REM 范例:①  ECHO off  ECHO piping symbol"\"ECHO redirect symbol">/"  “/”及“>”在DOS命令里有其特殊的意义,若是要让DOS不处理时,则需使用双引号括起来。  REM 范例: ②  @ECHO off  @REM THIS LINE WILL NOT DISPLAY  REN THIS LINE WILL BE DISPLAYED  @file1  上例中,命今前有@符号,其命令行自己将不会被显示出来,其他的命令行都将被显示出来。  REM 范例:③  @ECHO off  DIR *.TXT  执行的结果以下:  Volume in drive A is ABC  Directory of A:TEST1 TXT 13 06-26-90 4:03P  TEST2 TXT 13 06-26-90 4:03P  TEST3 TXT 13 06-26-90 4:04P  3 File(s) 310272 bytes free  连ECHO off 命令自己亦不显示。  FOR 内部命令、批处理文件命令1.功能: 可让咱们反覆地执行DOS的命令。  2.格式: 在批处理文件中:  FOR [%%c] in(set) DO [command][arguments]  在MS-DOS命令行中:  FOR [%c] in(set) DO [command][arguments]  3.说明: ①、[%%c]或[%c]参数:将顺序地获得(set)这个集合中的各个元素来做为它的值,当获得一个值以后,就执行COMMAND此一DOS命令。  ②、(set)中可包含*、?、/等通配符,那么[%%c]参数就会被设置成磁盘中可以匹配引指定的第一个文件名称,同时亦可以使用路径。  ③、[command]参数:指定您但愿执行在每一包含在(set)中文件命令。  ④、[arguments]参数为:[command]参数指定选择项。  4.范例: ①、若是一批处理文件中含有下述命令:  FOR %%F IN (TEST1.DBF TEST2.DBF TEST3.DBF) DO DEL %%F  则执行时,将有下述的结果:  DEL TEST1.DBF  DEL TEST2.DBF  DEL TEST3.DBF  ②、若是批处理文件中含有下述的命令:(在TEST.BAT内)  FOR %%F IN (%1 %2 %3 %4 %5) DO DEL %%F  则在执行时执行下列命令,将有与前项相同的结果:  A>TEST TEST1.DBF TEST2.DBF TEST3.DBF  ③、若是欲在DOS下直接执行此命令,则%%c只要改成%c的形式便可。  GOTO 内部命令、批处理文件命令1.功能: 将DOS控制权转移到某标号(LABEL)中,继续日后面执行。在批处理文件中的一个标号是以一个冒号(:)开头,其后跟着一个标号名称(LANEL NAME)所组成。  2.格式:GOTO label  3.说明: ①、GOTO label会形成接着执行标号label那一行的命令。  ②、若是label未被定义,则当前这一个批处理文件的动做就会中止,并显示label notfound 信息。  ③、批处理文件中的标号名称是由前面8个字来定义的。  ④、批处理文件的标号是永远不会显示出来的。因此未引用的标号可用来做为一些注解。  4.范例: TEST.BAT 文件,内容以下:  @ECHO OFF  GOTO SECOND  :FIRST  REM I AM FIRST  :SECOND  REM I AM SECOND  执行结果以下:  REM I AM SECOND  IF 内部命令、批处理文件命令1.功能: 使DOS能够有条件地执行命令。  2.格式:IF[not] errorlevel number command  IF[not] [string1]==[string2] command  IF[not] exist filename.ext command  3.说明: ①、[not]参数:是一个可选择使用的条目,使用时会将其后面条件的结果再求一个相反的结果。  ②、errorlevel number:errorlevel 是DOS产生出来的一个退出码。若是退出码大于或等于number(指定一个十进制值),则此条件成立,系统便可执行后面指定的command。  注意:测试退出码时要由大到小来测试,由于退出码只要测到大于或等于指定的值时,该条件即成立。  ③、[string1]==[string2]:string1及string2皆为字符的数据,英文字母的大小写将视为不一样。当[string1]及[string2]内容彻底相同时,则此条件成立,并执行后面指定的command。此条件中的等号(=)必需要有两个。  ④、exist filename.ext:若是指定的文件存在时,则所得的结果为“真”,不然为“假”。若为真,则系统即执行后面指定的command。  ⑤、IF命令为一个分支命令。condition是一个条件,command是根据条件成立时才去执行的命令。若不成立时则往下继续执行次一个批处理文件命令。  ⑥、IF errorlevel 主要是用于配合本身的程序,并于执行完毕后设置一个错误代码(errorcode),以便与IF errorlevel命令一块儿使用。  4.范例:REM 范例: ①  @ECHO OFF MYPROG1  IF ERRORLEVEL 2 GOTO 2  IF ERRORLEVEL 1 GOTO 1  GOTO EXTI  :L1  ECHO DATA ERROR  GOTO EXIT  :L2  ECHO PROGRAM CANCEL  :EXIT  上例中MYPROG1为一程序,在执行时若是发生退出码时,则表示该程序未执行成功。  REM 范例:②  @ECHO OFF  IF "%1"=="" GOTO EXIT  IF %1==1 GOTO L1  IF %1==2 GOTO L2  GOTO EXIT  :L1  ECHO I AM L1  GOTO EXIT  :L2  ECHO I AM L2  :EXIT  本例中,""(空字符串)、一、2是指定要与%1参数比较诉字符串。  REM 范例:③  @ECHO OFF  IF NOT EXIST PE2.EXE GOTO EXIT  PE2  GOTO END  :EXIT  ECHO PE2.EXE NOT FOUND!  :END  本例中,先检查PE2.EXE文件是否存在,不存在时则显示一个找不到的信息后结束。若是找到时则执行该程序后结束。  PAUSE 内部命令、批处理文件命令1.功能: 暂时中止系统命令的执行并显示下列信息:  strike a eky when ready......  2.格式:PAUSE  3.说明: ①、PAUSE命令能够在DOS执行一个命令时暂停,使您有机会来更换盘片。按下任何一个键后,便可让DOS继续执行下一个命令。  ②、执行PAUSE命令时,系统会暂停;若是您要终止执行此批处理文件,则您可按下Ctrl+Break二键,接头按下Y,便可终止执行,但若是于此时按下N,则系统将继续执行其它命令。  4.范例: PAUSE1.BAT 文件,内容以下:  @ECHO OFF  @ECHO I am first  PAUSE  @ECHO ON  @ECHO I am second  @ECHO Please put a new diskette into drive A  PAUSE  则其执行结果以下所示:  A:\>PAUSE1  I am first  strike any key when ready...  I am second  Please put a new diskette into drive A  strike any key when ready...  REM 批处理文件命令、配置文件命令1.功能: 能够在配置文件(CONFIG.SYS)或批处理文件(.BAT)中加上注解说明。  2.格式:REM [comment]  3.说明: ①、[comment]参数:表示注解行,不会被看成命令执行。  ②、您可在配置文件或批处理文件中将命令的功能注解加注在其中,以供往后引用。  ③、CONFIG.SYS文件中的REM与在批处理文件中REM,皆可为注解的命令行。可是在批处理文件中,REM会被显示出来,而在CONFIG.SYS的REM命令行在起动DOS时并不会被显示出来。  4.范例:REM this is a sample CONFIG.SYS FOR DBASE 3  FILES=25  BUFFERS=20  SHIFT 内部命令、批处理文件命令1.功能: 使得DOS命令行上可使用超过10个(%0到%9)以上的可替代参数。  2.格式SHIFT  3.说明 1.可替代参数的编号是%0--%9,若是要在一个命令行使用超过10个能够被代换的参数,则您可以使用SHIFT命令来突破此限制。  2.每当执行SHIFT一次,全部命令行上的全部参数将向左移动一位。 %1的内容将为%2的内容所取代...,%9内容则由新的参数递补。  3.%0表示批处理文件自己的名称,永远不变,因此每次执行时您能够加上 9个参数在批处理文件名后。若要增长一个参数,则您将须要使用这个SHIFT命令来移位,才可取得第十个参数。  4.范例 1.SHIFT.BAT文件,内容以下:  @ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9  SHIFT  @ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9  SHIFT  @ECHO %1 %2 %3 %4 %5 %6 %7 %8 %9  2.执行结果以下:  A:\>SHIFT 1 1 2 3 4 5 6 7 8 9 10 11(前后跟随11个参数)  1 2 3 4 5 6 7 8 9 (取最前面9个参数)  A:\>SHIFT (移位)  2 3 4 5 6 7 8 9 10 (取另外9个参数)  A:\>SHIFT (移动)
相关文章
相关标签/搜索