我用以下语句做例子
===================分割线=================
@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
批处理errorlevel用在if语句中无效
答案:3 悬赏:50
解决时间 2021-02-02 13:44
- 提问者网友:萌萌小主
- 2021-02-01 13:57
最佳答案
- 二级知识专家网友:何必打扰
- 2021-02-01 14:04
使用 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
全部回答
- 1楼网友:一场云烟
- 2021-02-01 15:08
把那俩个 IF 条件语句换个次序看看,也就是改成下面的!
IF errorlevel 1 GOTO 14
IF errorlevel 0 GOTO 13
究竟是为什么,我好想以前看过在VERYBAT 这个论坛里面看过一个ID:"英雄" 的
人写过一个教程,里面详细解释了这个原因!
- 2楼网友:飘零作归宿
- 2021-02-01 14:34
你问的问题涉及到批处理学习中一个比较基础性的问题--变量延迟,并不是errorlevel在if逻辑中无效,而是你对errorlevel变量的引用采用的是没开启变量延迟情况下的百分号%,根据常识,整个if语句在语法上仅仅是一条语句而已,语句执行过程中errorlevel变量的变化并不能通过%errorlevel%体现,而是应该在开启变量延迟的情况下用!errorlevel!体现,解决方法如下:
@echo off&setlocal enabledelayedexpansion
if 0 == 0 (
comand1
echo !errorlevel!
comand2
echo !errorlevel!
)
另一种解决方法是通过运用call语句的预处理两次原理来解决:
if 0 == 0 (
comand1
call,echo %%errorlevel%%
comand2
call,echo %%errorlevel%%
)
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯
• 手机登qq时,显示手机磁盘不足,清理后重新登 |
• 刺客的套装怎么选啊? |