还剩7页未读,继续阅读
文本内容:
文件和文件有什么区别cmd bat本质上没有区别,都是简单的文本编码方式,都可以用记事本创建、编辑和查看两者所用的命令行代码也是共用的,只是cmd文件中允许使用的命令要比bat文件多cmd文件只有在windows2000以上的系统中才能运行,而bat文件则没有这个限制从它们的文件描述中也可以看出以上的区别cmd文件的描述是“windowsnt命令脚本”,bat文件的描述是“msdos批处理文件”cmd是Win32命令,只能在32位系统中的命令行窗口中使用,仅仅是基于windows环境下的假DOS,bat是DOS命令,在任何dos环境下都可以使用批处理文件是一种没有什么固定格式的文件,它可以处理一条或者多条命令,文件的扩展名是.cmd或者.bat,文本里面的每一行就是一条处理指令,双击运行它的时候,Windows就会调用cmd.exe去运行它指令指令(和@6±0@echooff通常我们将这条指令写在批处理文件的第一行有了这条指令之后,当我们在运行批处理文件(.cmd或者.bat)的时候,就不会将文件里面的内容打印出来了,如果没有这句话,会先去将文件里面的内容打印在屏幕上echooff这条指令之后的内容不会被打印,但是这个指令会被打印@某一条指令不想被打印,可以在前面加上@echo.或echo:换行,即回车打印echo使用echo命令将设置的变量进行回显,即打印例如echo%a%赋值set注意等号左边不能有空格,等号右边的空格会被当做字符串的一部分例如seta=l注释和::REMrem和::都起到注释的作用,然而又有些不同rem和REM一样当echo处于关闭状态,rem和::注释的语句都不会被打印出来当echo处于打开状态,rem注释的语句会被打印出来,而使用::注释的语言也不会打印出来例如REMIamdtesting::Whoareyou标题title批处理title命令用于设置控制台窗口中显示的标题例如@echoofftitlenewwindowstitle执行后-
0.畀员windowstitle}p:\temp\eclipse-workspace\test\srctest.cmdp:\temp\eclipse-workspace\test\srcj暂停PAUSE当我们需要在文件运行的中间让其暂停一下,在控制台就会显示“请按任意键以继续”例如@echooffpause执行后D:\temp\eclipse-workspace\test\srctest.cmd请按任意键继续•・・■启动start作用启动一个单独的窗口以运行指定的程序或命令当我们在cmd窗口输入helpstart之后,然后回车,可以查看帮助信息Windows批处理文件(卜alled|.batcallec
[7]cm:i)可以通过多种方式从另一批处理文件(~|caller.bat或callerQcmd〉或交互式|cmd[exe提示中|cal.ler|7|QI直接呼叫|called|.bat|使用call命令callcalled|.bat|使用cmci命令cmd|/clealled|.bat]使用启动命令startcalled|.bat|指令call如果你想在某一批处理程序中调用另外一个批处理文件,就是用call指令|call|tempj.bat]延时timeout延时一定时间执行后面的命令,延时的单位是秒在延时的时候,可以按一个键继续(即不继续延时)例如,批处理文件中的内容l@echo off2echo heLLoworLd3timeout104echo gooc\执行批处理文件(延时过程中)D:\temp\eclipse-workspace\test\srctest.emdhello world等待8秒,按一个键继续・・・执行批处理文件(延时完成后)D:\temp\eclipse-workspace\test\srctest.emdhello world等待0秒,按一个键继续.•.good命令goto指定跳转到标签,找到标签后,程序将处理从下一行开始的命令语法gotolabel(label是参数,指定所要转向的批处理程序中的行)Sample:if{%1}=={}gotonoparmsif{%2}=={}gotonoparms(如果这里的if、%
1、%2你不明白的话,先跳过去,后面会有详细的解释)@Remcheckparametersifnullshowusage:noparmsechoUsage:monitor.batServerIPPortNumbergotoend标签的名字可以随便起,但是最好是有意义的字母字母前加个:用来表示这个字母是标签,goto命令就是根据这个来寻找下一步跳到到那里最好有一些说明这样你别人看起来才会理解你的意图命令Ifif表示将判断是否符合规定的条件,从而决定执行不同的命令有三种格式
(1)if“参数”==字符串”待执行的命令参数如果等于指定的字符串,则条件成立,运行命令,否则运行下一句(注意是两个等号)如if%1==aformata if{%1}=={}gotonoparmsif{%2}=={}gotonoparms
(2)ifexist文件名待执行的命令如果有指定的文件,则条件成立,运行命令,否则运行下一句如ifexistconfig.syseditconfig.sys
(3)iferrorlevel/ifnoterrorlevel数字,待执行的命令如果返回码等于指定的数字,则条件成立,运行命令,否则运行卜.一句如iferrorlevel2gotox2DOS程序运行时都会返回一个数字给DOS,称为错误码errorlevel或称返回码,常见的返回码为
0、lo命令forfor命令是一个比较复:杂的命令,主要用于参数在指定的范围内循环执行命令在批处理文件中使用FOR命令时,指定变量请使用%%variable而不要用%variable变量名称是区o分大小写的,所以%i不同于%1for{%variable|%%variable}in(set)docommand[CommandLineOptions]%variable指定一个单一字母可替换的参数(set)指定一个或一组文件可以使用通配符command指定对每个文件执行的命令command-parameters为特定命令指定参数或命令行开关批处理命令中的参数、变量是指去包含引号的命令行参数、%*接收所有参数(可
1.%[0-9]以无限多个,不只接收前九个参数)例如在C:\Xemo.batarglarg2”命令中,argl是传递给demo.bat的第一个参数,arg2是传递给demo.bat的第二个参数我们知道,%*是用来指批处理文件传入的参数例如%0表示命令本身,%1表示传入的第一个参数,以此类推•%0代表批处理文件自身(例如上例中的demo.bat)•%1接收传递给批处理文件的第一个参数,%2接收第二个参数...%9接收第九个参数•%9后面的变量(例如%10)是无效的•%*接收所有参数(可以无限多个,不只接收前九个参数;但不包含%0,即命令本身)•%0-%
9、%*用于批处理文件,在DOS命令行环境使用则无效•%0-%9能被扩充,但是%*不能被扩充示例::demo.bat1@echo off2echo firstarg:%Q echofi rstarg:%1echo3second arg:%2echo thirdarg:%3echo four4arg:%4echo fivearg:%5echo sixarg:%6echoseven arg:%7echo eightarg:%8echo nine5arg:%9%10被解析为%1和echo errorarg:%106echo allarg:%*78运行910C:\demo.bat arg0argl arg2arg3arg4arg5arg6arg7arg8arg9batch fileself:demo.bat firstarg:arg0secondarg:arglthirdarg:arg2fourarg:arg3fivearg:arg4sixarg:arg5sevenarg:arg6eightarg:arg7nine11arg:arg8errorarg:arg00//凫1是arg0,故这里为argallarg:arg0arglarg2arg3arg4arg5arg6arg7arg8arg9C\12・总体介绍
2.%~f|d|p|n|x|s|a|t|z|$PATH*
[09]1314开发一个批处理命令,有时候需要知道这个命令的路径、传入参数的路径等这些与路径相关的信息一般的编程语言会提供一些类库或者API来完成与路径相关的任务,例如.NET15中提供了File类、Directory类和Path类来做这些事情在批处理文件中,使用%~*来完成与路径相关的任务,语法规则可以表示如下%~f|d|p|n|x|s|a|t|z|$PATH*[0-9]・%・是指去除了引号的命令行参数3~
[09]i23先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是4F:\TempBatch\testuC:\ProgramFiles\studying.txt”56%~0指命令行本身,木例为Batch\test78%~1指第,个参数,本例为C:\ProgramFiles\studying.txt9注%1也指第一个参数,本例却为C:\ProgramFiles\studying.txt”,这里是有引号的10以此类推……11121314指绝对路径名
4.%-f[0-9]f-full,先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test uC:\ProgramFiles\studying.txtM本例中%~f0-F:\Temp\Batch\test.bat%~fl-C:\ProgramFiles\studying.txt・%・指盘符5~d
[09]d-driver,先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test uC:\ProgramFiles\studying.txt本例中%~d0-F:%~dl-C:・%・指不带盘符的目录名6~p
[09]p-path,先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test44C:\ProgramFiles\studying.txtM本例中%~pO-\Temp\Batch\注:前后都有\%~pl-\ProgramFiles\・%・指文件的名字,注意不带扩展名7~n
[09]n-name,先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test uC:\ProgramFiles\studying.txt本例中%-nO-test%~nl-studying指文件的扩展名
8.%*x[0-9]x-extension,先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test**C:\ProgramFiles\studying.txtM本例中%~x0-.bat注:前面有%~xl-.txt・%・指带有短名字(字符)的绝9~s
[09]s-short,DOS8对路径先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test uC:\ProgramFiles\studying.txtM本例中%~s0-F:\TEMP\BATCH\test.bat%~sl-C:\PROGRA-l\studying.txt注:这里的目录名全是大写,而文件名全是小写指文件的属性
10.%*a[0-9]a-attribute,先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test44C:\ProgramFiles\studying.txtM本例中%~a0--a——-%~al--a注这里每一位代表一种文件属性,具体的含义待查指文件的修改日期,注意不是创建日
11.%-t[0-9]t-time,期先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test44C:\ProgramFiles\studying.txt本例中%-tO-2011-08-2811:47%~tl-2011-08-2810:30指文件的大小
12.%-z[0-9]z-size,搜索里面的目录,看是否能够找
13.%-$PATH:[0-9]PATH到命令行参数指定的文件PATH指系统环境变量的那个PATH搜索PATH里面的目录,看是否能够找到命令行参数指定的文件找到此文件,输出该文件的绝对路径;没有找到此文件,输出空字符串组合使用上述的这些字符规则是可以组合起来使用的
14.先假定在F:\Temp\Batch目录下有一个test.bat批处理文件,执行的批处理命令行是F:\TempBatch\test uC:\ProgramFiles\studying.txtM例如,n和x组合表示带扩展名的文件名名字%~nx0-test.bat%~nxl-studying.txt我们可以推测出%~€^0表示的意思d表示盘符,p表示不带盘符的路径,那么dp就表示带盘符的路径了在本例中,我们可以得出%~dp0-F:\Temp\Batch\环境变量用两个百分号包起来例如,%LIBREOFFICEPROGRAM%表示环境变量LIBREOFFICEPROGRAMo。