什么是批处理?
在windows下,以cmd
或者bat
结尾的文件就是批处理文件;linux下,也有以sh
结尾的shell脚本文件。
前言
在这里,先解释什么是DOS?
DOS,即Disk Operation System,磁盘操作系统。
命令行就是在Windows操作系统中打开DOS窗口,以字符串的形式执行Windows管理程序。
那么,我们如何进入命令行窗口?
开始–>运行–>键入”cmd”,回车即可。
阅读本文需要一定的dos基础概念,例如:盘符、文件、目录(文件夹)、子目录、根目录、当前目录
每个命令的完整说明请加 /? 参数参考微软的帮助文档可以看到。
注:如果对某一命令还不是很熟悉,可以在命令行窗口下输入:命令名/?的方式来获得帮助。
例如:对dir命令的应用不熟悉,可以在命令行窗口下输入:
dir /?
批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD。这些命令统称批处理命令。
小知识:可以在键盘上按下Ctrl+C组合键来强行终止一个批处理的执行过程。
1 echo 和 @回显控制命令
|
|
“关闭回显”是指运行批处理文件时,不显示文件里的每条命令,只显示运行结果。批处理开始和结束时,系统都会自动打开回显
2 errorlevel程序返回码
|
|
每个命令运行结束,可以用这个命令行格式查看返回码用于判断刚才的命令是否执行成功默认值为0,
一般命令执行出错会设 errorlevel 为1
3 dir显示目录中的文件和子目录列表
|
|
其中 是通配符,代表所有的文件名,还有一个通配符 ? 代表一个任意字母或汉字。如 `c.*代表以 c 开头的所有文件。
?.exe` 代表所有文件名是一个字母的.exe文件。
如果指定的目录或文件不存在,将返回 errorlevel
为1;每个文件夹的 dir 输出都会有2个子目录.
和..
。.
代表当前目录, ..
代表当前目录的上级目录。
|
|
其它参数可参考dir /?
4 cd更改当前目录
|
|
文件名带空格,路径前需要加上引号!!如果更改到的目录不存在,则出错返回 errorlevel=1
cd /d d:
更改盘符需要加上/d参数。
5 md创建目录
|
|
6 rd删除目录
|
|
7 del删除文件
|
|
8 ren文件重命名
|
|
9 cls清屏
10 type显示文件内容
|
|
11 copy拷贝文件
|
|
12 title设置cmd窗口的标题
|
|
13 ver显示系统版本
14 label 和 vol设置卷标
|
|
15 pause暂停命令
运行该命令时,将显示下面的消息:请按任意键继续 . . .
一般用于看清楚屏幕上显示的内容
16 rem 和 ::注释命令
注释行,不执行操作
17 date 和 time日期和时间
|
|
18 goto 和 :跳转命令
|
|
19 find (外部命令)查找命令
|
|
20 more (外部命令)逐屏显示
|
|
21 tree显示目录结构
|
|
22 &顺序执行多条命令,而不管命令是否执行成功
|
|
23 &&顺序执行多条命令,当碰到执行出错的命令后将不执行后面的命令
|
|
24 ||顺序执行多条命令,当碰到执行正确的命令后将不执行后面的命令
|
|
25 |管道命令
前一个命令的执行结果输出到后一个命令
|
|
管道命令表示先执行 dir 命令,对其输出的结果执行后面的 find 命令该命令行结果:输出当前文件夹及所有子文件夹里的.exe文件的个数
|
|
26 > 和 >>输出重定向命令
|
|
27 <从文件中获得输入信息,而不是从屏幕上
一般用于 date time label 等需要等待输入的命令
28 命令行传递给批处理参数
%0 %1 %2 %3 %4 %5 %6 %7 %8 %9 %*
命令行传递给批处理的参数%0
批处理文件本身%1
第一个参数%9
第九个参数%*
从第一个参数开始的所有参数在C盘根目录新建test.bat,内容如下:
|
|
运行cmd,输入 c:\test.bat "/a" /b /c /d
可以看出每个参数的含意
修改test.bat内容如下
|
|
再运行cmd,输入 c:\test.bat “/a” /b /c /d可以参照 call/? 或 for/? 看出每个参数的含意。注意这里可以对文件进行日期比较和大小比较
|
|
生成的文件内容为 load “%1” “%2”
批处理文件里,用这个格式把命令行参数输出到文件
31 set设置变量
引用变量可在变量名前后加 % ,即 %变量名%
|
|
注意变量在 if 和 for 的复合语句里是一次性全部替换的,如
结果将显示aaaaaa因为在读取 if 语句时已经将所有 %p% 替换为aaa这里的”替换”,在 /? 帮助里就是指”扩充”、”环境
变量扩充”可以启用”延缓环境变量扩充”,用 ! 来引用变量,即 !变量名!
结果将显示aaabbb
还有几个动态变量,运行 set 看不到
32 start调用外部程序
批处理中调用外部程序的命令,否则等外部程序完成后才继续执行剩下的指令
不加 start 命令的话,”劲舞团”运行时,后面会有个黑乎乎的cmd窗口
33 call调用另外一个批处理
批处理中调用另外一个批处理的命令,否则剩下的批处理指令将不会被执行有时有的应用程序用start调用出错的,也可以call调用
34 choice (外部命令)
选择命令让用户输入一个字符,从而选择运行不同的命令,返回码errorlevel为1234……win98里
是choice.com win2000pro里没有,可以从win98里拷过来win2003里是choice.exechoice /N /C y /T 5 /D y>nul延时5秒
下面是个 choice 语句的例子
rem 必须先判断数值高的返回码rem 可以看到 errorlevel 值的判断有3种写法,有时某种写法不好用,可以用另外的写法
rem 直接运行chioce相当于运行
|
|
35 assoc 和 ftype文件关联
assoc 设置’文件扩展名’关联,关联到’文件类型’ftype 设置’文件类型’关联,关联到’执行程序和参数’
当你双击一个.txt文件时,windows并不是根据.txt直接判断用 notepad.exe 打开而是先判断.txt属于 txtfile ‘文件类型’再调用 txtfile 关联的命令行 txtfile=%SystemRoot%\system32\NOTEPAD.EXE %1
可以在”文件夹选项”→”文件类型”里修改这2种关联
|
|
如果该关联已经被破坏,可以运行 command.com ,再输入这条命令
36 pushd 和 popd切换当前目录
|
|
38 xcopy (外部命令)文件拷贝
|
|
39 一些不常用的内部命令
|
|
40 format (外部命令)格式化硬盘
|
|
41 fdisk (外部命令)硬盘分区win2000不带
该命令win98里的fdisk不支持80G以上大硬盘,winme里的支持fdisk/mbr重建硬盘分区表,一般用于清除引导区病毒、还原精灵注意使用该命令不能从硬盘启动,必须软驱或光驱启动后直接运行
42 ping (外部命令)
|
|
43 SC (外部命令)服务控制命令
|
|