您的位置:首页 > 其它

【BAT教程】实例及学习【入门篇】

2010-12-13 15:35 155 查看
什么叫批处理:

      顾名思义,批处理就是把一批或者说是一条条命令放在一个文本里,然后批量执行!执行这一批命令的文件的扩展名是BAT或者CMD,把任何一批命令放入在有这样扩展名的文件里,执行时里面的命令就会一条条的执行完,当然我们还可以在其中加入一些逻辑判断的语句,让里面的命令在满足一定条件时执行指定的命令。

      从更广义的角度来看,unix的shell脚本以及其它操作系统甚至应用程序中由外壳进行解释执行的文本,都具有与批处理文件十分相似的作用,而且同样是由专用解释器以行为单位解释执行,这种文本形式更通用的称谓是脚本语言。所以从某个程度分析,batch, unix shell, awk, basic, perl 等脚本语言都是一样的,只不过应用的范围和解释的平台各有不同而已。甚至有些应用程序仍然沿用批处理这一称呼,而其内容和扩展名与dos的批处理却又完全不同。

==== 注 ==================
批处理文件(batch file)也可以称之为批处理程序(batch program),这一点与编译型语言有所不同,就c语言来说,扩展名为c或者cpp的文件可以称之为c语言文件或者c语言源代码,但只有编译连接后的exe文件才可以称之为c语言程序。因为批处理文件本身既具有文本的可读性,又具有程序的可执行性,这些称谓的界限是比较模糊的。

每个编写好的批处理文件都相当于一个DOS的外部命令,你可以把它所在的目录放到你的DOS搜索路径(path)中来使得它可以在任意位置运行。一个良好的习惯是在硬盘上建立一个bat或者batch目录(例如C:/BATCH),然后将所有你编写的批处理文件放到该目录中,这样只要在path中设置上c:/batch,你就可以在任意位置运行所有你编写的批处理程序。
===========================

==== 注 ===== ===============
纯以dos系统而言,可执行程序大约可以细分为五类,依照执行优先级由高到低排列分别是:DOSKEY宏命令(预先驻留内存),COMMAND.COM中的内部命令(根据内存的环境随时进驻内存),以com为扩展名的可执行程序(由command.com 直接载入内存),以exe位扩展名的可执行程序(由command.com 重定位后载入内存),以bat位扩展名的批处理程序(由command.com 解释分析,根据其内容按优先级顺序调用第2,3,4,5种可执行程序,分析一行,执行一行,文件本身不载入内存)
============ ===============

先看最简单的例子:

@echo off
echo "欢迎来到非常BAT!"
pause
把上面的3条命令保存为test.bat或者test.cmd然后执行,他就会在屏幕上显示二行话:"欢迎来到非常BAT!请按任意键继续. . ."
这就是一个简单批处理文件了。

下面进行命令的介绍:

-------------------------
ECHO

当程序运行时,显示或隐藏批处理程序中的正文。也可用于允许或禁止命令的回显。在运行批处理程序时,MS-DOS一般在屏幕上显示(回显)批处理程序中的命令。使用ECHO命令可关闭此功能。

语法

      ECHO [ON|OFF]

若要用echo命令显示一条命令,可用下述语法:

      echo [message]

参数message 指定让MS-DOS在屏幕上显示的正文。

参数ON|OFF指定是否允许命令的回显。若要显示当前的ECHO的设置,可使用不带参数的ECHO 命令。

============ ===============

注:“[]”表示在代码中不用写,这里不过是加以标记

============ ===============

-------------------

CALL

从一个批处理程序中调用另一个批处理程序,而不会引起第一个批处理的中止。

语法

      CALL [drive:][path]filename [batch-parameters]

参数 [drive:][path]filename 指定要调用的批处理程序的名字及其存放处。文件名必须用.BAT作扩展名。 batch-parameters 指定批处理程序所需的命令行信息。

-------------------------------

PAUSE

暂停批处理程序的执行并显示一条消息,提示用户按任意键继续执行。防止批处理执行完后直接退出!只能在批处理程序中使用该命令。

语法

PAUSE

-------------------------------
REM

在批处理文件或CONFIG.SYS中加入注解。也可用REM命令来屏蔽命令(在CONFIG.SYS 中也可以用分号 ; 代替REM命令,但在批处理文件中则不能替代)。

语法

      REM [string]

参数string指定要屏蔽的命令或要包含的注解。

-------------------------------  

GOTO

会点编程的朋友就会知道这是跳转的意思。在批处理中允许以":XXX”来构建一个标号,然后用GOTO XXX直接来执行标号后的命令。
例:
     :lable
     REM上面就是名为LABEL的标号
     DIR C:/
     DIR D:/
     GOTO lable
     REM以上程序跳转标号LABEL处继续执行

-------------------------------  

CALL
CALL命令可以在批处理执行过程中调用另一个批处理,当另一个批处理执行完后,再继续执行原来的批处理
例:
创建一个2.BAT,内容如下
      ECHO OFF

      ECHO 这就是2的内容
创建一个1.BAT,内容如下
      ECHO 这是1的内容
      CALL 2.BAT
      ECHO 1和2的内容全部显示完成。
执行1.BAT,来看看结果。

-------------------------------  

IF
IF条件判断语句,语法格式如下:
     IF [NOT] ERRORLEVEL number command
     IF [NOT] string1==string2 command
     IF [NOT] EXIST filename command
解释下:
[NOT]:将返回结果取反值,就是“如果没有”的意思
ERRORLEVEL:是命令执行完成后返回的退出值。IF ERRORLEVEL这个句子必须放在某一个命令的后面,执行命令后由IF ERRORLEVEL来判断命令的返回值。
例:

      echo off
      dir z:
      rem 如果退出代码为1(不成功)就跳至标题1处执行
      IF ERRORLEVEL 1 goto 1
      REM 如果退出代码为0(成功)就跳至标题0处执行
      IF ERRORLEVEL 0 goto 0
      :0
      echo 命令执行成功!
      Rem 程序执行完毕跳至标题exit处退出
      goto exit
      :1
      echo 命令执行失败!
      Rem 程序执行完毕跳至标题exit处退出
      goto exit
      :exit
      Rem 这里是程序的出口

Number:退出值的数字取值范围0~255,判断时值的排列顺序应该由大到小。返回的值大于等于指定的值时,条件成立。
string1==string2:string1和string2都为字符的数据,英文内字符的大小写将看作不同,条件相等后即执行后面的command。

例:

      ECHO OFF
      IF 1==2 goto no
      Echo 变量不相等!
      goto exit
      :no
      echo 变量相等
      goto exit
      :exit
EXIST filename:为文件或目录存在的意思

例:

      echo off
      IF not EXIST autoexec.bat goto 1
      echo文件存在成功!
      goto exit
      :1
      echo文件不存在失败!
      goto exit
      :exit
下面是特殊符号的介绍:

-------------------------------  

@
这个字符在批处理中的意思是关闭当前行的回显。我们从前几课知道ECHO OFF可以关闭掉整个批处理命令的回显,但不能关掉ECHO OFF这个命令,现在我们在ECHO OFF这个命令前加个@,就可以达到所有命令均不回显的要求。

------------------------------- 

>
这个字符的意思是传递并且覆盖,他所起的作用是将运行的回显结果传递到后面的范围(后边可以是文件,也可以是默认的系统控
制台)。

------------------------------- 

>>
这个符号的作用和>有点类似,但他们的区别是>>是传递并在文件的末尾追加,而>是覆盖。
同样拿1.txt做例子。
比如:
      文件1.txt的文件内容是:1+1
      使用命令:dir *.txt >>1.txt
咱们来看看显示的结果如何

------------------------------- 

|
这是一个管道传输命令,意思是将上一命令执行的结果传到下一个命令去处理。
例如:
       dir c:/|find "txt"
以上命令是:查找C:/所有,并发现TXT字符串。FIND的功能请用FIND /?自行查看。
在不使format的自动格式化参数时,我是这样来自动格式化A盘的
       echo y|format a: /s /q /v:system
用过format的都知道,再格盘时要输入y来确认是否格盘,这个命令前加上echo y并用|字符来将echo y的结果传给format命令
从而达到自动输入y的目的(这条命令有危害性,测试时请慎重)。

------------------------------- 

^
^是对特殊符号"<",">","&"的前导字符,在命令中他将以上3个符号的特殊功能去掉,仅仅只把他们当成符号而不使用他们的特殊意
义。
比如
      echo test ^>1.txt
结果则是他没有追加在1.txt里,呵呵。只是显示了出来。

------------------------------- 

&
这个符号允许在一行中使用2个以上不同的命令,当第一个命令执行失败了,也不影响后边的命令执行。
比如:
      dir z:/ & dir y:/ & dir c:/
以上命令会连续显示z,y,c盘的内容,不理会该盘是否存在。

------------------------------- 

&&
这个命令和上边的类似,但区别是,第一个命令失败时,后边的命令也不会执行
      dir z:/ && dir y:/ && dir c:/

------------------------------- 

""
双引号允许在字符串中包含空格,进入一个特殊目录可以用如下方法
      cd "program files"
      cd progra~1
      cd pro*
以上三种方法都可以进入program files这个目录

------------------------------- 

,
逗号相当于空格,在某些情况下“,”可以用来当做空格使
比如
      dir,c:/

------------------------------- 


分号,当命令相同时,可以将不同目标用;来隔离,但执行效果不变,如执行过程中发生错误,则只返回错误报告,但程序还是会
执行。比如:
      dir c:/;d:/e:/;f:/
以上命令相当于
      dir c:/
      dir d:/
      dir e:/
      dir f:/

------------------------------- 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息