标题: [文本处理] 【已解决】批处理中IF %ERRORLEVEL% == 0与 IF ERRORLEVEL 0区别 [打印本页]
作者: xushaolong2009 时间: 2009-4-13 17:53 标题: 【已解决】批处理中IF %ERRORLEVEL% == 0与 IF ERRORLEVEL 0区别
看了个if的教程,代码如下-
- @echo off
- set /p var=随便输入个命令:
- %var%
- if %ERRORLEVEL% == 0 (
- echo !var! 执行成功了
- ) ELSE (
- echo 基本上执行失败了..
- )
- pause
-
-
复制代码
里面的代码大都看的懂除了第三行的%var%,有什么用?
更大的疑惑还在于运行后,系统会自动根据输入的命令判断是不是命令(内部或外部??个人理解) 这是怎么产生的,好像代码里没有写有关提示的吧!
还有个疑惑- @echo off
- net user
- IF %ERRORLEVEL% == 0 echo net user 执行成功了!
- pause
-
-
复制代码
教程上说如果换了 IF ERRORLEVEL 0 echo net user 执行成功了! 这句,不管上面的命令是否执行成功,结果都会认为是命令成功的。 可否有解决此现象的,或是为什么会这样???
[ 本帖最后由 xushaolong2009 于 2009-4-13 22:42 编辑 ]
作者: Batcher 时间: 2009-4-13 22:11
第三行的%var%作用就是执行一下用户输入的命令。
通常情况下,命令执行成功以后,系统变量ERRORLEVEL会被设置成0;如果命令失败,或者遇到非法命令,系统变量ERRORLEVEL会被设置成一个非0的数字。后面的if命令正式利用这一点来判断用户输入的是不是一个正确的命令。
IF ERRORLEVEL 0 的意思是 if %errorlevel% 大于等于 0,这个代码中是个不正确的用法,因为它无法真正的判断户输入的是不是一个正确的命令。
如果想知道一个命令运行之后,ERRORLEVEL的值到底是多少,可以在后面加个echo自己看看:
echo %errorlevel%
作者: xushaolong2009 时间: 2009-4-13 22:30 标题: 心得
感谢Batcher 斑竹的回答!
原来批出来运行时还有一个errorlevel值。可否这样理解。批处理正式利用这些errorlevel值来判断命令是否正确,若不正确则不执行,或是在屏幕上显示错误信息。如果前面命令没有执行正确,则影响了后面命令的执行,或者干脆停止执行直接退出,就像运行时窗口一闪而过?
作者: Batcher 时间: 2009-4-13 22:38 标题: 回复 3楼 的帖子
基本上可以这样理解
你可以随着批处理学习的不断深入来逐渐体会errorlevel的用法
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |