菜鸟学习DOS批处理:echo @ if 的用法

菜鸟学习DOS批处理:echo @ if 的用法

2015-02-03 作者: giser 浏览: 3252 次

摘要: 原来认为批处理是高深莫测的知识,只有深入了解最基本的计算机原理及软硬件知识,才能接触它。试用过网上的一些例子,发现它和DOS命令有着不可分割的联系。说白了,批处理就是一大片的DOS命令:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最...

原来认为批处理是高深莫测的知识,只有深入了解最基本的计算机原理及软硬件知识,才能接触它。试用过网上的一些例子,发现它和DOS命令有着不可分割的联系。说白了,批处理就是一大片的DOS命令:每一行可视为一个命令,每个命令里可以含多条子命令,从第一行开始执行,直到最后一行结束,它运行的平台是DOS。

所以要想完成掌握批处理就相当于要将DOS命令完全学会,除此之后还得学习一些语法知识。看来我这个上世纪末进入大学校门的学生,就凭当时主流操作系统还是依靠DOS,多少学了点DOS基础以及自学的编程基础,完全可以弄明白批处理程序的。下面博文是网上最通俗的教程(我觉得),可以让像我这样的被动接受一些DOS知识的菜鸟,轻松上手。当然,想学好它并非一朝一夕能成功的。 我将首先将我自己掌握的用通俗的语言描绘出来,力争让没有一点DOS基础的人也能按照我的文章自己学下去。

要学批处理,那我们就有必要知道什么是批处理。一看到名字,批处理嘛,那么肯定可以对文件进行批量的处理。批处理包括两种,一种是DOS批处理,另一种是PS(PHOTOSHOP)批处理。我研究的是前者,首先建立一个批处理文件:打开一个记事本——在里面写上你的DOS命令——保存——命名以BAT为后缀(就是batch了,批处理的英文)。行了,批处理 文件建立成功了。 首先,我看到的最陌生的命令---echo,我用通俗的语言解释一下。

ECHO在英文中就是回显的意思,就相当于C语言中的printf,例如ECHO HELLO WORLD ,就相当于将HELLO WORLD打印出来。此外,ECHO还是一个开关,既然是开关那就有开和关两种状态。当ECHO开的时候就相当于开启了打印功能,当ECHO关的时候就关闭了打印功能!我们知道在DOS命令栏中我们输入的命令总是显示出来的,而批处理中就可以用这个功能实现这样一个情况——既让语句执行命令又不让命令本身显示在DOS框中,这就是ECHO的作用。我下面给你一个例子,你自己按照下面的去写。

echo off echo hello world echo on echo hello world pause

将上面的语句写在记事本上保存后缀为BAT的文件。运行一下你生成的文件看一下有什么效果。。。

看到区别了吗?第一行,把ECHO关了,那么下面的执行语句将不在显示命令本身,所以第二行打印出了一个HELLO WORLD,第三行把ECHO 开了,所以又所命令本身显示出来了。行了ECHO 到此为止。 接下来再讲一下与打印有关的——@。这个很熟悉吧!

我现在就说一下它在批处理中的作用。下面大家将下面的命令写在记事本里,建立一个BAT文件然后运行一下看一下它和第一个文件运行的结果有什么差别。

@echo off echo
hello world @echo on echo hello world @pause

当你在一个命令前加一个@符号后,那么它后面的都将不显示出来,但是仅限于本行!这个命令就这么简单,不多讲了!下面讲一个很有用的命令if。如果满足条件的话就执行这个语句,不然的话就执行另外一条不就行了么。对!就是这么简单!下面就认真看好了。

if一共有两个主要作用:首先,它可以判断两个字符串是否相等;其次,它可以通过判断两个数字的大小,然后执行相应的命令。 下面看一下具体用法吧

1。判断两个字符串相等。用if str1==str2(或者是str1!=str2) (执行的命令) else (执行的命令) 。

2。判断两个数是否相等然后执行相应的语句。这里要用到errorlevel,errorlevel是一个环境变量,就是说在不同的命令中它所对应的值代表的意义是不同的,不过它的初始值0得记住。IF ERRORLEVEL 是用来测试它的上一个DOS命令的返回值的,注意只是上一个命令的返回值,而且返回值必须依照从大到小次序顺序判断。特别注意必须按照从大到小的顺序不然的话将打印全部的结果举个例子吧!将下面的语句写成一个批处理然后运行看看

@ECHO OFF XCOPY C:\AUTOEXEC.BAT D:\ IF ERRORLEVEL 0 ECHO 成功拷贝文件 IF ERRORLEVEL 

1 ECHO 未找到拷贝文件 IF ERRORLEVEL 2 ECHO 用户通过ctrl-c中止拷贝操作 IF ERRORLEVEL 3 ECHO 预置错误阻止文件拷贝操作 IF ERRORLEVEL 4 ECHO 拷贝过程中写盘错误

呵呵,知道怎么回事了吧。无论拷贝是否成功,后面的: 未找到拷贝文件 用户通过ctrl-c中止拷贝操作 预置错误阻止文件拷贝操作 拷贝过程中写盘错误 都将显示出来。所以一定要注意从大到小的顺序来! 此外if还有其它作用,下面看一下吧!

3。用于检验数值,通俗得讲就是比较数的大小。在批处理中,没有>号等符号,取而代之的是一些E文。下面说一下具体怎么用吧。

首先记一下E文代表的符号: EQU - 等于 NEQ - 不等于 LSS - 小于 LEQ - 小于或等于 GTR - 大于 GEQ - 大于或等于 下面语句用于判断15和20的大小并打印出来:

@echo off set /a num1=20 set /a num2=15 if %num1% gtr %num2% echo %num1%大于%num2% if %num1% EQU %num2% echo %num1%等于%num2% if %num1% LSS %num2% echo %num1%小于%num2% pause>nul 

看不懂?呵呵,我解释完之后就简单了,以后你就记住就行了,千万别问我为什么(让你怎么不去问为什么1加1等于2啊,没办法解释)。第二三行中的SET就相当于给变量赋初值,第四行后应该就行看懂了吧!对了最后那个>nul代表着执行pause语句但不打印pause出来。行了,第三种应该算完事了。

4。if还有一个特殊的用法就是可以用来检测某个变量是否已经被定义 这里大家就看一段代码吧,看了就明白怎么回事了!

@echo off set "str1=ok" set "str2=no" if defined str1 echo str1

已经被定义

if defined str2 echo str2

已经被定义

if defined str3 (echo str3已经被定义) else echo str3 

没有被定义

pause>nul defined

在E文中就是定义的意思吧,很好理解!

关注“开源集思”公众号
获取免费资源

随机推荐


Copyright © from 2014. 开源地理空间基金会中文分会 吉ICP备05002032号

Powered by TorCMS

OSGeo 中国中心 邮件列表

问题讨论 : 要订阅或者退订列表,请点击 订阅

发言 : 请写信给: osgeo-china@lists.osgeo.org