一、什么是批处理文件?
批处理文件(BATCHFILE,简称 BAT文件)是一种在DOS 下最常用的可执行文件。它具有灵活的操纵性,可适应各种复杂的计算机操作(指在DOS下)。所谓的批处理,就是按规定的顺序自动执行若干个指定的DOS命令或程序。即是把原来一个一个执行的命令汇总起来,成批的执行。
二、bat常用命令
echo、@、call、pause、rem是批处理文件最常用的几个命令,我们就从他们开始学起。
1.Echo:表示显示此命令后的字符;
作用 显示或隐藏屏幕显示,在屏幕上显示文本信息。
使用方法 ECHO ON | OFF 使整个屏幕显示或不显示
2.echo off:表示在此语句后所有运行的命令都不显示命令行本身。
3.@ :@ 与echo off相象,但它是加在其它命令行的最前面,表示运行时不显示命令行本身。
@使一句语句不在屏幕上显示
例:@echo off ( 使整个屏幕不显示,包括该语句本身)
例:echo 这句话将显示在屏幕上
4.call:调用另一条批处理文件(如果直接调用别的批处理文件 ,执行完那条文件后将无法执行当前文件后续命令);
5.pause:运行此句会暂停,显示Press any key to continue... 等待用户按任意键后继续; 作用 暂停命令的执行,主要用于BAT 的调试阶段。暂停时可按ctrl+break 或ctrl+c 来停止 BAT 的执行。
使用方法 PAUSE
例:PAUSE [文本信息] (暂停并显示文本信息)
6.rem:表示此命令后的字符为解释行,不执行,只是给自己今后查找用的;
作用 给命令加上注释,使一句语句失去作用
使用方法 REM [ 注释语句]
例:REM DEL*.* (不执行删除命令)
7.%0-%9批处理参数:
作用 代替命令中的参数
使用方法 <命令名> [批处理参数1] [批处理参数2]···
例:有批处理文件名为GO。BAT,清单如下
@echo off
echo this is a demo bat
cd %1
当键入文件名及参数c:\时 go c:\
则效果等同于 cd c:\
8.:::
作用 它是注释命令,在批处理脚本中和rem命令等效。它后面的内容在执行时不显示,也不起任何作用,因为它只是注释,只是增加了脚本的可读性,和C语言中的/*.......*/类似。地球人都能看懂,就不多说了。
9.SHIFT:
作用 更新批处理参数所代替的命令参数,每运行一次,命令参数前移一位。
使用方法 shift
例:有批处理文件名为DEMO。BAT,清单如下:
@echo off
if "%1"="" goto end (有关if 语句,参见下文)
rem 判断%1所代表的是否为空,为空则转到 end 语句
dir %1
Shift
: end
当键入 demo a: b: c: d: 时,效果为列 A、B、C、D 四个磁盘的目录
10.GOTO:
作用 转到指定段。
使用方法 goto <段名>
例:goto start (转到 start 段,其中start为段名,须加":"以便和命令名相区别。)
11.IF:
作用 用于条件判断
使用方法 1. IF[NOT] EXIST <文件名> <命令>
2. IF [NOT] <字符串1 >=<字符串2>
3. IF ERRORLEVEL (N) <命令>
作用 1.如果(不)存在所选文件则执行所带命令
2.如果字符串1(不)等于字符串2,则执行所带命令
3.如果命令执行后的错误等级码是(不是)N, 那么执行所带命令。
例: 1.if exist demo.bat echo this is a demo (如果demo.bat 文件存在,显示 this is a demo)
2.if "x"="1" echo the answer is right (如果x=1,显示 the answer is right)
3.if errorlevel 2 echo good luck (如果错误码为2,显示 good luck)
12.FOR:
作用 用一个临时参数代替括号中的对象
使用方法 for <%%参数名> in <(对象1、对象2···)> do <命令>
例:for %% d in (a: b: ) do format %%d (效果等同于格式化A盘和B盘)
13.SET:
作用 设置环境变量
使用方法set <变量名>=<对象>
例:set ff=45 (使变量ff的值为45)
14.CHOICE:
作用 为进行交互式选择提供手段。
使用方法choice [/c:字母] [/n ] [/s ] [/t: 字母,秒数] [说明信息]
[/c:/字母] :指定那些字母用于选择操作,每个字母之间用逗号隔开。缺省为y,n
[/n] :不显示供选择的字母
[/s:] :对输入的字母区分大小写
[/t: 字母,秒数] :限定选择所用的秒数(0-99)过时则以指定的字母作为选择
[说明信息] :显示其后的信息用于说明
choice 和 if 的第三种用法可配合使用,具体方法是,当你选第一个字母时,errorlevel 为1,第二个为二···
例: choice [/c: a,b,c]
if errorlevel 3 echo your choice is c
if errorlevel 2 echo your choice is b
if errorlevel 1 echo your choice is a
三、批处理BAT命令详解 -- shift
批处理文件中可引用的参数为%0~%9, %0是指批处理文件的本身,也可以说是一个外部命令;%1~%9是批处理参数,也称形参;而替换形参的实参若超过了批处理文件中所规定数值(9个)且想在批处理文件中应用这些实参的话,shift命令可以帮你实现!
Shift 命令:更改批处理文件中可替换参数的位置
C代码
1 shift [/n]
n 的取值是[0,8],且为整数;[/n]为可选参数,当赋予n某个值时,就意味着命令从第n个参数开始移位;当n赋予的值为0,1或不带有任何命令选项的 shift时,则表示批处理文件中替换参数左移一个位置,后面的替换参数陆续填补上去,直至可替换参数为空。
eg: 创建批处理文件d:\test.bat;
C代码
2 @echo off
3 cls
4 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
5 shift /0
6 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
7 shift /1
8 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
9 shift /2
10 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
11 shift /3
12 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
13 shift /4
14 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
15 shift /5
16 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
17 shift /6
18 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
19 shift /7
20 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
21 shift /8
22 echo %1 %2 %3 %4 %5 %6 %7 %8 %9
23 pause 1>nul
然后在命令提示符d:\下输入test 1 2 3 4 ......17显示执行结果,就知晓其中的规律啦!
C代码
24 D:\>test 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
25
26 1 2 3 4 5 6 7 8 9
27 2 3 4 5 6 7 8 9 10
28 3 4 5 6 7 8 9 10 11
29 3 5 6 7 8 9 10 11 12
30 3 5 7 8 9 10 11 12 13
31 3 5 7 9 10 11 12 13 14
32 3 5 7 9 11 12 13 14 15
33 3 5 7 9 11 13 14 15 16
34 3 5 7 9 11 13 15 16 17
35 3 5 7 9 11 13 15 17
四、批 处理BAT命令及外部命令
1、dir
含义:显示指定路径上所有文件或目录的信息
格式:dir [盘符:][路径][文件名] [参数]
参数:
/w:宽屏显示,一排显示5个文件名,而不会显示修改时间,文件大小等信息;
/p:分页显示,当屏幕无法将信息完全显示时,可使用其进行分页显示;
/a:显示具有特殊属性的文件;
/s:显示当前目录及其子目录rd下所有的文件。
举例:dir /p
将分屏显示当前目录下文件。在当前屏最后有一个“press any key to continue . . .”提示,表示按任意键继续。
2、cd
含义:进入指定目录
格式:cd [路径]
举例:cd dos
cd命令只能进入当前盘符中的目录,其中“cd\”为返回到根目录,“cd..”为返回到上一层目录。
3、md
含义:建立目录
格式:md [盘符][路径]
举例:md temp
表示在当前盘符下建立一个名为temp的目录。
4、rd
含义:删除目录
格式:rd [盘符][路径]
举例:rd temp
表示删除当前路径下的temp目录,需要注意的是,此命令只能删除空目录。
5、copy
含义:拷贝文件
格式:copy [源目录或文件] [目的目录或文件]
举例1:copy c:\*.com d:\",表示将c盘根目录下所有扩展名为com的文件拷贝到d盘根目录中。
举例2:copy c:\autoexec.bat c:\autoexec.bak
表示将autoexec.bat文件复制成为扩展名为bak的文件。输入dir命令,可以发现此变化。
6、del
含义:删除文件
格式:del [盘符][路径][文件名] [参数]
举例:del c:\ *.bak /p
表示删除当前目录下所有扩展名为bak的文件,参数/p表示可以使用户在删除多个文件时对每个文件都显示删除询问。
7、sys
含义:传递系统文件命令。 格式:sys [源盘符][目的盘符]
举例:sys c: a:
此命令将为a盘传送系统,传送成功后,a盘将成为系统启动盘。
常用的外部命令
dos的外部命令就是一些应用程序,这些外部命令都是以文件的形式存在,windows系统的dos外部命令保存在windows主目录下的command目录中。下面来介绍几个常用的dos外部命令。
1、edit
含义:简单的编辑软件,可以用它来编辑一些程序和批处理文件。
格式:edit [盘符][文件名]
举例:edit c:\autoexec.bat
输入此命令后将打开编辑器。在编辑状态下输入文件内容后,按alt+f键激活file菜单,按向下的箭头选择退出(exit),提示是否要保存刚才输入的内容,如果要保存,只需输入y或者直接回车即可。
2、format
含义:格式化命令,可以完成对软盘和硬盘的格式化操作。
格式:format [盘符] [参数]
举例:format a: /s/q
此命令将格式化a盘,其中参数/q表示进行快速格式化,/s表示完成格式化后将系统引导文件拷贝到该磁盘,这样软件就可以作为dos系统启动盘了。格式化过程中,屏幕上会显示已经完成的百分比。格式化完成后,会提示为磁盘起一个名字,最后还会报告磁盘的总空间和可利用空间等。
3、xcopy
含义:拷贝命令
格式:xcopy [源路径][源目录/文件名] [目的目录/文件名] [参数]
举例:xcopy c:\abc d:\ /s
执行此命令后,将把c:\abc目录及其目录中的文件全部拷贝到d盘根目录下,xcopy是copy的增强命令,可以实现对多个子目录进行拷贝。最常用的参数是/s,它可以对一个目录下的所有子目录进行拷贝。
4、deltree
含义:删除目录树
格式:deltree [盘符][路径] 举例:deltree are
表示删除当前路径下的are子目录,执行后会提示是否确认删除,按下y,即可删除。
<a name="dos命令">dos命令</a>
<a href="#目录操作类">目录操作类命令</a>
<a href="#磁盘操作类">磁盘操作类命令</a>
<a href="#文件操作类">文件操作类命令</a>
<a href="#其它命令">其它命令</a>
dos命令大全
注意! dos命令不区分大小写,比如C盘的Program Files,在dos命令中完全可以用"program files"代替,加上英文引号是因为名称的中间有空格(即多于一个词),这一点是初学者经常忽略的。
<a name="目录操作类">目录操作类命令</a>
(一)md——建立子目录
1.功能:创建新的子目录
2.类型:内部命令
3.格式:md[盘符:][路径名]〈子目录名〉
4.使用说明:
(1)“盘符”:指定要建立子目录的磁盘驱动器字母,若省略,则为当前驱动器;
(2)“路径名”:要建立的子目录的上级目录名,若缺省则建在当前目录下。
例:(1)在c盘的根目录下创建名为fox的子目录;(2)在fox子目录下再创建user子目录。
c:\>md fox (在当前驱动器c盘下创建子目录fox)
c:\>md fox \user (在fox 子目录下再创建user子目录)
(二)cd——改变当前目录
1.功能:显示当前目录
2.类型:内部命令
3.格式:cd[盘符:][路径名][子目录名]
4.使用说明:
(1)如果省略路径和子目录名则显示当前目录;
(2)如采用“cd\”格式,则退回到根目录;
(3)如采用“cd..”格式则退回到上一级目录。
例:(1)进入到user子目录;(2)从user子目录退回到子目录;(3)返回到根目录。
c:\>cd fox\user(进入fox子目录下的user子目录)
c:\fox\user>cd.. (退回上一级根目录,注意cd后面跟着两个点"..")。
c:\fox>cd\ (返回到根目录)
c:\
(三)rd——删除子目录命令
1.功能:从指定的磁盘删除了目录。
2.类型:内部命令
3.格式:rd[盘符:][路径名][子目录名]
4.使用说明:
(1)子目录在删除前必须是空的,也就是说需要先进入该子目录,使用del(删除文件的命令)将其子目录下的文件删空,然后再退回到上一级目录,用rd命令删除该了目录本身;
(2)不能删除根目录和当前目录。
例:要求把c盘fox子目录下的user子目录删除,操作如下:
第一步:先将user子目录下的文件删空;
c\>del c:\fox\user\*.* 或 del c:\fox\user 或 del c:\fox\user\*
(注:这样只能删除文件,仍然不能删除user目录下的文件夹)
第二步,删除user子目录。
c\>rd c:\fox\user
(注:如果fox\user文件夹下仍有文件夹,这一步将不会奏效,怎样解决呢?其实不必劳烦两步,直接这样 c\>rd c:\fox\user /s
加上了一个参数/s,如果不想让系统询问是否删除,可以再加一个参数 /p。
(四)dir——显示磁盘目录命令
1.功能:显示磁盘目录的内容。
2.类型:内部命令
3.格式:dir [盘符][路径][/p][/w]
4.使用说明:/p的使用;当欲查看的目录太多,无法在一屏显示完屏幕会一直往上卷,不容易看清,加上/p参数后,屏幕上会分面一次显示23行的文件信息,然后暂停,并提示;press any key to continue
/w的使用:加上/w只显示文件名,至于文件大小及建立的日期和时间则都省略。加上参数后,每行可以显示五个文件名。
(五)path——路径设置命令
1.功能:设备可执行文件的搜索路径,只对文件有效。
2.类型:内部命令
3.格式:path[盘符1]目录[路径名1]{[;盘符2:],〈目录路径名2〉…}