批处理errorlevel用在if语句中无效
我用以下语句做例子===================分割线=================@ECHOoffDEL/F/A/Q/S%1IFerrorlevel0GOT...
我用以下语句做例子
===================分割线=================
@ECHO off
DEL /F /A /Q /S %1
IF errorlevel 0 GOTO 13
IF errorlevel 1 GOTO 14
:13
cls
ECHO 删除 %1 成功
pause
goto end
:14
cls
ECHO 删除 %1 失败
pause
:end
exit
=====================分割线=================
无论有没有 %1 这个路径(也就是有没有出错) , 显示的都是"删除 %1 成功"
(%1在这里是指拖动到该批处理图标上的文件)
可是
如果写入txt
就没错
还是拿上面的来做例子
例如
===================分割线================
@ECHO off
DEL /F /A /Q /S %1
:13
cls
ECHO 返回值: %errorlevel% >>c:\a.log
start " " "C:\a.log"
pause
goto end
:end
exit
==================分割线===============
如果双击
在①例中会显示删除 成功
在②例中会写入文本的是"1"(失败)
到底咋回事?????
求高手指教!!!!!
第②种要先在c盘里新建a.log
懒得新建的
复制代码
保存为1.bat
运行
代码如下
==================分割线=============
echo.>c:\a.log 展开
===================分割线=================
@ECHO off
DEL /F /A /Q /S %1
IF errorlevel 0 GOTO 13
IF errorlevel 1 GOTO 14
:13
cls
ECHO 删除 %1 成功
pause
goto end
:14
cls
ECHO 删除 %1 失败
pause
:end
exit
=====================分割线=================
无论有没有 %1 这个路径(也就是有没有出错) , 显示的都是"删除 %1 成功"
(%1在这里是指拖动到该批处理图标上的文件)
可是
如果写入txt
就没错
还是拿上面的来做例子
例如
===================分割线================
@ECHO off
DEL /F /A /Q /S %1
:13
cls
ECHO 返回值: %errorlevel% >>c:\a.log
start " " "C:\a.log"
pause
goto end
:end
exit
==================分割线===============
如果双击
在①例中会显示删除 成功
在②例中会写入文本的是"1"(失败)
到底咋回事?????
求高手指教!!!!!
第②种要先在c盘里新建a.log
懒得新建的
复制代码
保存为1.bat
运行
代码如下
==================分割线=============
echo.>c:\a.log 展开
3个回答
展开全部
使用 if errorlevel 的时候,应该把数字高的放在前面,因为此处的 if errorlevel 0 是在命令返回值大于 0 的时候成立的,相当于 if %errorlevel% geq 0,而当删除失败时 errorlevel 等于 1,当然符合大于 0 的条件了。
三个解决办法:
1、调转顺序,先执行 errorlevel 值高的 if 命令
2、使用 if %errorlevel%==0 这里的 %errorlevel% 将被预处理成固定值,与数字 0 进行数值比较,也就不存在返回值大于 0 时产生的问题了
3、使用逻辑连接符代替 if errorlevel,改成:
DEL /F /A /Q /S %1 && echo 删除成功&&goto 13 || echo 删除失败&&goto 14
三个解决办法:
1、调转顺序,先执行 errorlevel 值高的 if 命令
2、使用 if %errorlevel%==0 这里的 %errorlevel% 将被预处理成固定值,与数字 0 进行数值比较,也就不存在返回值大于 0 时产生的问题了
3、使用逻辑连接符代替 if errorlevel,改成:
DEL /F /A /Q /S %1 && echo 删除成功&&goto 13 || echo 删除失败&&goto 14
展开全部
把那俩个 IF 条件语句换个次序看看,也就是改成下面的!
IF errorlevel 1 GOTO 14
IF errorlevel 0 GOTO 13
究竟是为什么,我好想以前看过在VERYBAT 这个论坛里面看过一个ID:"英雄" 的
人写过一个教程,里面详细解释了这个原因!
IF errorlevel 1 GOTO 14
IF errorlevel 0 GOTO 13
究竟是为什么,我好想以前看过在VERYBAT 这个论坛里面看过一个ID:"英雄" 的
人写过一个教程,里面详细解释了这个原因!
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
第一种:
IF errorlevel 0 GOTO 13
这种写法不对,改成:if %errorlevel%==0 goto 13
第二种没问题。
IF errorlevel 0 GOTO 13
这种写法不对,改成:if %errorlevel%==0 goto 13
第二种没问题。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询