[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文本处理] 【已解决】批处理中IF %ERRORLEVEL% == 0与 IF ERRORLEVEL 0区别

看了个if的教程,代码如下
  1.   
  2. @echo off
  3.    set /p var=随便输入个命令:
  4.    %var%
  5.    if %ERRORLEVEL% == 0  (
  6.    echo !var! 执行成功了
  7.    ) ELSE (
  8.    echo 基本上执行失败了..
  9.    )
  10.   pause
  11.    
复制代码
里面的代码大都看的懂除了第三行的%var%,有什么用?
  更大的疑惑还在于运行后,系统会自动根据输入的命令判断是不是命令(内部或外部??个人理解) 这是怎么产生的,好像代码里没有写有关提示的吧!

    还有个疑惑
  1.   @echo off
  2.   net user
  3.   IF %ERRORLEVEL% == 0 echo net user 执行成功了!
  4.   pause
  5.   
复制代码
教程上说如果换了   IF ERRORLEVEL 0 echo net user 执行成功了!   这句,不管上面的命令是否执行成功,结果都会认为是命令成功的。 可否有解决此现象的,或是为什么会这样???

[ 本帖最后由 xushaolong2009 于 2009-4-13 22:42 编辑 ]

第三行的%var%作用就是执行一下用户输入的命令。

通常情况下,命令执行成功以后,系统变量ERRORLEVEL会被设置成0;如果命令失败,或者遇到非法命令,系统变量ERRORLEVEL会被设置成一个非0的数字。后面的if命令正式利用这一点来判断用户输入的是不是一个正确的命令。

IF ERRORLEVEL 0 的意思是 if %errorlevel% 大于等于 0,这个代码中是个不正确的用法,因为它无法真正的判断户输入的是不是一个正确的命令。

如果想知道一个命令运行之后,ERRORLEVEL的值到底是多少,可以在后面加个echo自己看看:
echo %errorlevel%
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

心得

感谢Batcher 斑竹的回答!
原来批出来运行时还有一个errorlevel值。可否这样理解。批处理正式利用这些errorlevel值来判断命令是否正确,若不正确则不执行,或是在屏幕上显示错误信息。如果前面命令没有执行正确,则影响了后面命令的执行,或者干脆停止执行直接退出,就像运行时窗口一闪而过?
1

评分人数

    • Batcher: 善于总结是学习的习惯PB + 2

TOP

回复 3楼 的帖子

基本上可以这样理解
你可以随着批处理学习的不断深入来逐渐体会errorlevel的用法
我帮忙写的代码不需要付钱。如果一定要给,请在微信群或QQ群发给大家吧。
【微信公众号、微信群、QQ群】http://bbs.bathome.net/thread-3473-1-1.html
【支持批处理之家,加入VIP会员!】http://bbs.bathome.net/thread-67716-1-1.html

TOP

返回列表