原文请参考:最简单也是最实用的-批处理(二)
接下来的命令都是比较重要,而且理解起来有点难度的,同时,也是使用起来能实现更多功能的。
1.call简介
从批处理程序调用另一个批处理程序(*.bat或*.cmd文件);
CALL [drive:][path]filename [batch-parameters]
2.start简介
调用外部程序,所有的DOS命令和命令行程序都可以由start命令来调用;对于更详细的信息,
start /? > start.txt,这么做吧。可以得到更多。
3.choice简介
允许用户从选择列表选择一个项目并返回所选择项目的索引;
一些经常用的参数:
/c 指定要创建的选项列表,默认列表是“YN”
/t 作出默认选择之前,暂停的秒数。可以接受的值是从0到9999。
/d 在指定的/t时间过去之后,默认选择的选项,该选项必须是在/c中指定的选项。
例如:
choice /c YGD /t 5 /d Y
4.if简介
在高级语言开发中,控制流程中都有if语句,这个if和高级语言的if差不多;if表示将判断是否符合规定的条件,从而决定执行不同的命令。
有三种格式:
IF [NOT] ERRORLEVEL number command
IF [NOT] string1==string2 command
IF [NOT] EXIST filename command
NOT 指定只有条件为 false 的情况下,Windows 才应该执行该命令。
ERRORLEVEL number 如果最后运行的程序返回一个等于或大于指定数字的退出代码,指定条件为 true(注意条件:等于或大于指定数字的推出代码,这就意味着在判断errorlevel时,需要从大到小的顺序进行匹配)。
string1==string2 如果指定的文字字符串匹配,指定条件为 true。
EXIST filename 如果指定的文件名存在,指定条件为 true。
command 如果符合条件,指定要执行的命令。如果指定的条件为 FALSE,命令后可跟 ELSE命令,该命令将 在 ELSE 关键字之后执行该命令。
ELSE 子句必须出现在同一行上的 IF 之后。例如:
IF EXIST filename. (
del filename.
) ELSE ( 『注:ELSE必须放在这里』
echo filename. missing.
)
由于 del 命令需要用新的一行终止,因此以下子句不会有效:
IF EXIST filename. del filename. ELSE echo filename. missing
由于 ELSE 命令必须与 IF 命令的尾端在同一行上,以下子句也
不会有效:
IF EXIST filename. del filename.
ELSE echo filename. missing
如果都放在同一行上,以下子句有效:
IF EXIST filename. (del filename.) ELSE echo filename. missing
所以,注意if语句的多行书写,多行书写要求command1的左括号必须和if在同一行、 else必须和command1的右括号同行、command2的左括号必须与else同行、command1和command2都可以有任意多行,即 command可以是命令集。
5.errorlevel简介
在运行一个程序之后,会给操作系统一个返回码,在windows中,可以通过errorlevel获得这个返回码。
在写C++程序的时候,在main函数中,一般都有一个return 0;语句,一般很多人都不在意这个返回值,当你运行完毕这个程序时,此时使用errorlevel获得值就是0.如果没有名为 ERRORLEVEL 的环境变量,%ERRORLEVEL%会扩充为 ERROLEVEL 当前数值的字符串表达式;否则,会得到其数值。运行程序后,以下语句说明 ERRORLEVEL 的用法:
goto answer%ERRORLEVEL%
:answer0
echo Program had return code 0
:answer1
echo Program had return code 1
也可以使用以上的数字比较:
IF %ERRORLEVEL% LEQ 1 goto okay
比较符号:
EQU - 等于
NEQ - 不等于
LSS - 小于
LEQ - 小于或等于
GTR - 大于
GEQ - 大于或等于
更多精彩在: