DOS批处理高级教程第六章 if命令讲解.docx

上传人:b****7 文档编号:25218475 上传时间:2023-06-06 格式:DOCX 页数:7 大小:19.23KB
下载 相关 举报
DOS批处理高级教程第六章 if命令讲解.docx_第1页
第1页 / 共7页
DOS批处理高级教程第六章 if命令讲解.docx_第2页
第2页 / 共7页
DOS批处理高级教程第六章 if命令讲解.docx_第3页
第3页 / 共7页
DOS批处理高级教程第六章 if命令讲解.docx_第4页
第4页 / 共7页
DOS批处理高级教程第六章 if命令讲解.docx_第5页
第5页 / 共7页
点击查看更多>>
下载资源
资源描述

DOS批处理高级教程第六章 if命令讲解.docx

《DOS批处理高级教程第六章 if命令讲解.docx》由会员分享,可在线阅读,更多相关《DOS批处理高级教程第六章 if命令讲解.docx(7页珍藏版)》请在冰豆网上搜索。

DOS批处理高级教程第六章 if命令讲解.docx

DOS批处理高级教程第六章if命令讲解

最近发现有些朋友一老问IF命令的用法,IF命令个人觉得很简单,所以就一直没把发放到新手教学贴里说,现在我给补上一文,希望对各位"非常BAT的"新手朋友们有所帮助.

现在开始:

在CMD使用IF/?

打开IF的系统帮助(自己看我就不全部列出来了),我们会发现IF有3种基本的用法!

执行批处理程序中的条件处理。

IF[NOT]ERRORLEVELnumbercommand

IF[NOT]string1==string2command

IF[NOT]EXISTfilenamecommand

NOT指定只有条件为false的情况下,WindowsXP才应该执行该命令。

ERRORLEVELnumber如果最后运行的程序返回一个等于或大于指定数字的退出编码,指定条件为true。

string1==string2如果指定的文字字符串匹配,指定条件为true。

EXISTfilename如果指定的文件名存在,指定条件为true。

command如果符合条件,指定要执行的命令。

如果指定的条件为FALSE,命令后可跟一个执行ELSE关键字后的命令的ELSE命令。

ELSE子句必须在IF之后出现在同一行上。

例如:

IFEXISTfilename(

delfilename

)ELSE(

echofilenamemissing

第一种用法:

IF[NOT]ERRORLEVELnumbercommand

这个用法的基本做用是判断上一条命令执行结果的代码,以决定下一个步骤.

一般上一条命令的执行结果代码只有两结果,"成功"用0表示"失败"用1表示.

举个例子:

1@echooff

2netuser

3IF%ERRORLEVEL%==0echonetuser执行成功了!

4pause

复制代码

这是个简单判断上条命令是否执行成功.

细心的朋友可能会发现,这个用法和帮助里的用法不太一样,按照帮助里的写法"IF%ERRORLEVEL%==0echonetuser执行成功了!

"这一句代码应该写成:

IFERRORLEVEL0echonetuser执行成功了!

那为什么我要写成这样呢?

各位自己把代码改掉执行后,就会发现错误了!

用这种语法,不管你的上面的命令是否执行成功,他都会认为命令成功了,不知道是BUG还是本人理解错误...

补充:

这不是bug,而是iferrorlevel语句的特点:

当使用iferrorlevel0……的句式时,它的含义是:

如果错误码的值大于或等于0的时候,将执行某个操作;当使用if%errorlevel%==0……的句式时,它的含义是:

如果错误码的值等于0的时候,将执行某操作。

因为这两种句式含义的差别,如果使用前一种句式的时候,错误码语句的排列顺序是从大到小排列

%ERRORLEVEL%这是个系统变量,返回上条命令的执行结果代码!

"成功"用0表示"失败"用1表示.当然还有其他参数,用的时候基本就这两数字.

一般上一条命令的执行结果代码只有两结果,"成功"用0表示"失败"用1表示

这只是一般的情况,实际上,errorlevel返回值可以在0~255之间,比如,xcopy默认的errorlevel值就有5个,分别表示5种执行状态:

退出码说明

0文件复制没有错误。

1iferrorlevel2echo。

2用户按CTRL+C终止了xcopy。

4出现了初始化错误。

没有足够的内存或磁盘空间,或命令行上输入了无效的驱动器名称或语法。

5出现了磁盘写入错误。

要判断上面xcopy命令的5种退出情况,应写成:

iferrorlevel5echo出现了磁盘写入错误

iferrorlevel4echo出现了初始化错误

iferrorlevel2echo用户按CTRL+C终止了xcopy

iferrorlevel1echoiferrorlevel2echo

iferrorlevel0echo文件复制没有错误。

才能正确执行。

补充完毕。

再举几个例子给新手理解

5@echooff

6netusertest

7IF%ERRORLEVEL%==1echonetuser执行失败了!

8pause

复制代码

这个是判断上一条命令是否执行失败的

9@echooff

10set/pvar=随便输入个命令:

11%var%

12if%ERRORLEVEL%==0gotoyes

13gotono

14:

yes

15echo!

var!

执行成功了

16pause

17exit

18:

no

19echo基本上执行失败了..

20pause

复制代码

这个是根据你输入的命令,自动判断是成功还是失败了!

在来一个简化版的

21@echooff

22set/pvar=随便输入个命令:

23%var%

24if%ERRORLEVEL%==0(echo%var%执行成功了)ELSEecho%var%执行失败了!

25pause

复制代码

else后面写上执行失败后的操作!

当然我门还可以把ifelse这样的语句分成几行写出来,使他看上去好看点...

26@echooff

27set/pvar=随便输入个命令:

28%var%

29if%ERRORLEVEL%==0(

30echo!

var!

执行成功了

31)ELSE(

32echo基本上执行失败了..

33)

34pause

复制代码

这里介绍的两种简写对IF的三种语法都可以套用,不单单是在IF[NOT]ERRORLEVELnumbercommand这种法上才能用

第二种用法:

IF[NOT]string1==string2command

这个呢就是用来比较变量或者字符的值是不是相等的.

例子

35@echooff

36set/pvar=请输入第一个比较字符:

37set/pvar2=请输入第二个比较字符:

38if%var%==%var2%(echo我们相等)ELSEecho我们不相等

39pause

复制代码

上面这个例子可以判断你输入的值是不是相等,但是你如果输入相同的字符,但是如果其中一个后面打了一个空格,

这个例子还是会认为相等,如何让有空格的输入不相等呢?

我们在比较字符上加个双引号就可以了.

40@echooff

41set/pvar=请输入第一个比较字符:

42set/pvar2=请输入第二个比较字符(多输入个空格试试):

43if"%var%"=="%var2%"(echo我们相等)ELSEecho我们不相等

44pause

复制代码

第三种用法:

IF[NOT]EXISTfilenamecommand

这个就是判断某个文件或者文件夹是否存在的语法

例子

45@echooff

46ifexist"c:

\test"(echo存在文件)ELSEecho不存在文件

47pause

复制代码

判断的文件路径加引号是为了防止路径有空格,如果路径有空格加个双引号就不会出现判断出错了!

这个语法没什么太多的用法,基本就这样了,就不多介绍了.

另外我们看到每条IF用法后都有个[NOT]语句,这啥意思?

其他加上他的话,就表示先判断我们的条件不成立时,没加他默认是先判断条件成立时,比如上面这个例子

48@echooff

49ifnotexist"c:

\test"(echo存在文件)ELSEecho不存在文件

50pause

复制代码

加个NOT,执行后有什么结果,如果你的C盘下根本就没c:

\test,他还是会显示"存在文件",这就表示了加了NOT就会先判断条件失败!

懂了吧,上面例子改成这样就正确了!

51@echooff

52ifnotexist"c:

\test"(echo不存在文件)ELSEecho存在文件

53pause

复制代码

第四种用法:

IF增强的用法

IF[/I]string1compare-opstring2command#参数/I表示不区分大小写

IFCMDEXTVERSIONnumbercommand

IFDEFINEDvariablecommand#判断变量是否存在,很有用

CMDEXTVERSION条件的作用跟ERRORLEVEL的一样,除了它是在跟与命令扩展名有关联的内部版本号比较。

第一个版本是1。

每次对命令扩展名有相当大的增强时,版本号会增加一个。

命令扩展名被停用时,CMDEXTVERSION条件不是真的。

如果已定义环境变量,DEFINED条件的作用跟EXISTS的一样

IFDEFINEDvariablecommand

IFNOT"variable"==""command

上面两条命令效果一样。

用“setvariable=”命令使变量variable变成未定义,即空值。

一句话,变量值为空,则为未定义;变量值不为空,则为已定义。

用语句IFDEFINEDvariablecommand判断变量是否存在时,请注意variable为不使用引导符号%的变量名,不能用写为%variable%,否则出错。

例:

ifdefinedaa(echo变量aa存在)else(echo变量aa不存在)

运行显示:

变量aa不存在

例:

setaa=123

setaa=

ifdefinedaa(echo变量aa存在)else(echo变量aa不存在)

运行显示:

变量aa不存在

例:

54@echooff

55ifa==A(echo我们相等)ELSEecho我们不相等

56pause

复制代码

执行后会显示:

我们不相等

例:

57@echooff

58if/ia==A(echo我们相等)ELSEecho我们不相等

59pause

复制代码

加上/I不区分大小写就相等了!

最后面还有一些用来判断数字的符号

EQU-等于

NEQ-不等于

LSS-小于

LEQ-小于或等于

GTR-大于

GEQ-大于或等于

我就举一个例子,大家都懂数学...不讲多了

60@echooff

61set/pvar=请输入一个数字:

62if%var%LEQ4(echo我小于等于4)ELSEecho我不小于等于4

63pause

复制代码

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1