#浅谈%errorlevel%#
对于%errorlevel%环境变量,大家想必是既熟悉又陌生吧。知道有这个东西的存在,但是不常用。
下面我将谈谈我对这个变量的见解,有错误请指正!
微软的Windows NT系列系统,主要是用C/C++语言写的,部分用汇编。(到了VISTA以后用的语言比较多,.NET框架占比重也比较大。)
它的命令行工具也差不多,大多是C/C++写的,部分是汇编写的(后缀是.com的文件)。
C/C++语言是写命令行工具的利器,一方面,它的语言效率高那是毫无疑问的,可以说仅次于汇编;另一方面,Windows系统提供了很多控制台程序的接口,C/C++语言可以方便的调用。
现在交代了下背景,其他废话就不多说了。
每个C/C++语言程序都有一个“主函数mian()”,下面我列举一个最简单的C/C++语言程序,后面那些是注释:- #include<stdio.h> //包含一个函数库,此句不用理解,略过
- int main() //主函数,前面的 int 指这个函数有有整数的返回值
- {
- int i; //定义一个变量i,这个好理解
- printf("请输入一个整数:") //此句相当于批处理的 echo
- scanf("%d",&i); //用户输入 i 值,必须为数字
- if(i==1) //if语句大家都懂吧?
- {
- return 1; // 前面我提到过了,main()是一个有返回值的函数
- // 这里的 return 就是返回语句,这句即为返回整数1
- } else {
- return 0; // 返回整数0
- }
- }
复制代码 代码写好了,找个工具编译,链接后,就可以得到我们的程序了,在CMD下运行,程序名为CPP.EXE:- C:\Users\Broly\Desktop\VC>CPP.exe
- 请输入一个整数:0
- C:\Users\Broly\Desktop\VC>echo %errorlevel%
- 0
- C:\Users\Broly\Desktop\VC>CPP.exe
- 请输入一个整数:1
- C:\Users\Broly\Desktop\VC>echo %errorlevel%
- 1
- C:\Users\Broly\Desktop\VC>CPP.exe
- 请输入一个整数:2
- C:\Users\Broly\Desktop\VC>echo %errorlevel%
- 0
- C:\Users\Broly\Desktop\VC>CPP.exe
- 请输入一个整数:3
- C:\Users\Broly\Desktop\VC>echo %errorlevel%
- 0
- C:\Users\Broly\Desktop\VC>CPP.exe
- 请输入一个整数:4
- C:\Users\Broly\Desktop\VC>echo %errorlevel%
- 0
复制代码 大家发现什么没?没发现的,你再看看源代码中的 if 语句。
我的理解为:当一个程序运行完成后,main()函数的返回值会临时保存在 %errorlevel% 变量中。
这就是 %errorlevel% 为什么每个程序运行后都不一定相同的原因。
不过根据经验,一般C/C++语言程序,如果程序没有运行异常的话都会返回一个 0 值,即 return 0;否则将返回一个非零值。
%errorlevel% 具体取值还是要看写程序那个人如何取舍。
而且,不是每个程序都是C语言写的,也不是每个C语言程序都有返回值或者返回为整数。
我个人猜测,没有返回值的程序,%errorlevel% 的值将会是 0 。(由于时间关系我不想去实践,有兴趣的同学可以试试,最后把结果贴上来分享)
废话多了点,大家别见怪。 |