Board logo

标题: [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑 [打印本页]

作者: quya     时间: 2008-6-2 19:11    标题: [已结]关于 If Errorlevel 是否对第三方程序有效的疑惑

Dos  下键入 Help If

第一句的例子是 IF [NOT] ERRORLEVEL number command

但我应用时却似乎一直无效, 无奈只好用 IF [NOT] %ERRORLEVEL%==number command

请达人解答怎么回事, 谢谢!

[ Last edited by HAT on 2008-12-8 at 10:00 ]
作者: HAT     时间: 2008-6-3 00:28
Microsoft Windows XP [Version 5.1.2600]
(C) Copyright 1985-2001 Microsoft Corp.

C:\Test>type test.bat
@echo off
dir C:\test1>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
dir C:\test>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
C:\Test>test.bat
File Not Found
错误的命令
正确的命令
作者: quya     时间: 2008-6-3 10:03
谢谢解答. 我以前也曾经这样用过.

可是我在执行第三方程序之后, 比如WINRAR, (WINRAR也有退出码的), 这样做就似乎不行了.

非得用 if %errorlevel%== 不可
作者: HAT     时间: 2008-6-3 11:46
能把你的完整代码贴出来看看吗?
作者: quya     时间: 2008-6-3 14:04
已经证实, 该命令对第三方命令确实无效。

比如有个程序叫drvtypes,用于检测盘符类型,正常情况下退出码0,参数错误则退出码不为零。但以下代码执行均显示“Correct”,碰到任何第三方程序, 我觉得还是用“if %errorlevel%==0”来得保险。
你可以用任何第三方程序试验下。
@echo off
drvtypes>nul
call:test
drvtypes /s>nul
call:test
exit

:test
if errorlevel 0 (echo Correct) else (echo Error)
pause

作者: rs369007     时间: 2008-12-8 09:48    标题: 二楼这贴看起来似乎有点不足

type test.bat&pause
rem  测试.bat在cmd当前工作目录
@echo off
dir >C:\test1>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
pause

dir >C:\test>nul
if errorlevel 1 (
  echo 错误的命令
) else (
  echo 正确的命令
)
pause
test.bat
pause
echo File Not Found
pause

这样似乎才能看到效果!个人愚见
作者: qzwqzw     时间: 2008-12-9 08:43

quya确实没有明白if errorlevel 的基本用法
那个判断是大于等于的判断
而不是等于的判断
作者: ghoulrobot     时间: 2008-12-9 10:14
昨天晚上尝试choice的时候.也没有进行判断.直接一直往下走...