BAT文件的常用语法

bat文件中常用的命令有:echo、@、rem、::、pause、goto、%、call、if、copy等。下面简要给出这几个命令的用法。

1. echo命令

echo 表示显示此命令后的字符。例如echoHello WorldchoHello World这条echo命令,在命令行中执行这条命令时,将在命令行中显示字符串:

echoHello World

HelloWorld

其中前面一个字符串“echo Hello World”表示执行的命令本身,后面的字符串“Hello World”表示这条命令的执行结果。

echo命令有个常用的组合命令“echo off”,表示此语句后所有运行的命令都不显示命令行本身,它与“@命令”的功能非常相似。即上面的例子“echo Hello World”这条echo命令中执行时不显示执行过程,也就是不显示命令本身“echo HelloWorld”,只显示命令执行结果“HelloWorld”。

2. @、rem、::、pause、goto命令
1)@命令

它的作用是让执行窗口中不显示它后面这一行的命令本身。它的作用和“echo off”的作用非常类似,只是“echo off”命令的作用域是整个脚本文件,而@命令只是紧接着它后面的那个命令。

例如一般的脚本文件都是一个“@echo off”命令开始的,这句命令表示不显示后面所有命令的执行过程,且“echo off”这句命令本身也不显示。

2)rem与::命令

rem表示是注释行。::也是注释命令,在批处理脚本文件中和rem命令等效,它后面的内容在执行时不显示,也不起任何作用,增加脚本的可读性。

3)pause命令

停止脚本文件命令,按任意键继续。

4)goto命令

和C语言的goto语句类似,跳转到相应的标号处执行。

3 . %命令

%表示变量的引用。

1)非for语句引用变量

例如下面的代码,执行下面的代码,首先将变量a设为123,之后引用变量a,程序将显示“123”,若不加“%%”,程序将认为a是一个字符串,显示字符串“a”。

@echo off

seta=123

echo %a%

2)for语句引用变量

for语句引用变量稍有不同,要加上两个“%%”。因为要与另外形式的外部变量%1 -%9区分开。

例如下面的语句,执行后将在命令行中打印“1 2 3 4 5”这几个数。

for %%iin (1 2 3 4 5 ) do  echo %%i

4. call命令

call命令总结下来有下面的四种用法:

1)第一种用法

也就是最常用的一种用法,就是调用另一个批处理文件。

2)第二种用法

如果在被调用的批处理中面有参数,调用的时候需要在后面加上参数。

例如下面的批处理代码

a.bat内容:

@echo off

echo %0 %1

b.bat内容:

@echo off

call a.bat hello

dir c:\

pause

上面的例子将执行a.bat脚本文件打印出的内容为“a.bathello”。

在执行b.bat的时候,会将hello赋值给%1,而%0代表a.bat自己。在批处理中,在处理批处理文件后面最多可以带10个参数。使用%*代表所有参数%1-%9代表9个参数,%0代表批处理自己。

3)第三种用法

调用一个应用程序,例如call notepad.exe打开记事本。call可以这么用,但一般在调用应用程序的时候会使用start,很少用call。

4)第四种用法

调用本批处理中的一个标签。例如下面的有一个脚本语言:

@echo off

call :no1

start notepad.exe

exit

:no1

startcalc

执行该脚本文件时首先会调转到标号“:no1”出执行打开计算器程序,在接着执行调用call命令之后的代码打开记事本应用程序。

5. if 命令

if 表示将判断是否符合规定的条件,从而决定执行不同的命令。有三种格式:

1)if

语法: if [not] "参数" == "字符串" 待执行的命令。参数如果等于(not表示不等,下同)指定的字符串,则条件成立,运行命令,否则运行下一句。

Sample:if "%1" == "a"//表示第一个参数是够等于字符串“a”

2)if exist

if [not] exist [路径\]文件名。如果有指定的文件,则条件成立,运行命令,否则运行下一句。

Sample: ifexist config.sys edit config.sys 表示如果存在这文件,则编辑它

Sample:if exist config.sys type config.sys 表示如果存在这文件,则显示它的内容

3)iferrorlevelnumber

if [not]errorlevel <数字>待执行的命令。如果程序返回值等于指定的数字,则条件成立,运行命令,否则运行下一句。(返回值必须按照从大到小的顺序排列)

@echooff      

XCOPYF:\test.bat D:\      

IFERRORLEVEL 1  (ECHO 文件拷贝失败)

Else IFERRORLEVEL 0 ECHO (成功拷贝文件)      

pause

很多DOS程序在运行结束后会返回一个数字值用来表示程序运行的结果(或者状态),称为错误码errorlevel或称返回码。常见的返回码为0、1。通过if errorlevel命令可以判断程序的返回值,根据不同的返回值来决定执行不同的命令。

6. copy命令

DOS下最常用的拷贝命令。命令格式如下:

COPY [/D][/V] [/N] [/Y | /-Y] [/Z] [/A | /B ] source [/A | /B]

[+ source[/A | /B] [+ ...]] [destination [/A | /B]]

命令参数解释如下:

source 指定要复制的文件。

/A 表示一个ASCII 文本文件。

/B 表示一个二进位文件。

/D 允许解密要创建的目标文件

destination为新文件指定文件夹和/或文件名。

/V 验证新文件写入是否正确。

/N 复制文件时,尽可能使用短文件名。

/Y 不使用确认是否要覆盖现有目标文件的提示。

/-Y 使用确认是否要覆盖现有目标文件的提示。

/Z 用可重新启动模式复制已联网的文件。

K60的BAT文件作用总结

总结一下,BAT文件下的5个文件其实功能可以归纳为两点。

1 将CW10.2集成开发环境下给出的参数(编译生成路径)生成并检查其路径的正确性。确保这个生成路径一定是存在的且是正确的。

2 将PSP和BSP工程用到的头文件都复制到文件生成文件夹下。其实这个很好理解,因为应用工程在编译时,最终定位的BSP和PSP工程的内容都是在生成文件夹LIB文件下去查找的。BSP和PSP工程中的.c文件都已经做到.a文件中了(CW10.2集成开发环境实现),但是熟悉.a文件的读者一定会知道,.a文件是不能包含.h文件(头文件)的,所以要将头文件手动加到LIB文件下。但是MQX毕竟是操作系统,其头文件不是一个两个那么少,所以用户手动复制的话会很麻烦,用户复制的时候也容易少复制文件,导致程序编译时不过。所以开发者将这些重复的复制操作变成脚本文件,“一步到位”省去了读者很多不必要的麻烦。

3. BAT文件的这6个脚本文件(MQX3.8版本共有6个脚本文件,以后的版本有可能会增加)是在BSP和PSP工程编译之前和编译之后执行的。其中“bsp_prebuild.bat”是在BSP编译之前调用的,“bsp_twrk60n512.bat”、“write_readme.bat”是在BSP工程编译之后调用的。“psp_cortex.bat”和“psp_twrk60n512.bat”是在PSP工程编译之后调用的。“verify_dir.bat”这个脚本文件为验证路径的正确性,是一个通用的脚本文件,编译前和编译后这两个过程中都有可能调用。

 

表101-1 工程下各个bat文件简明功能

文件名

简明功能

bsp_prebuild.bat

生成编译输出路径文件夹,删除上一次BSP工程编译生成的内容。

bsp_twrk60n512.bat

复制BSP工程中所有用到的头文件至编译输出路径下。

write_readme.bat

在编译输出路径文件夹下生成一个Readme文本文件。

psp_cortex.bat

复制PSP工程中所有用到的头文件至编译输出路径下。

psp_twrk60n512.bat

复制处理器特有的一些头文件至编译输出路径下。

verify_dir.bat

验证路径是否正确和存在。


  • 4
    点赞
  • 31
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值