批处理 ERRORLEVEL 无法正常工作
Batch ERRORLEVEL not working properly
我使用批处理有一段时间了,最近 运行 遇到了一个我从未遇到过的问题,涉及 ERRORLEVELS。
这是我为展示错误而制作的一个简短程序。
@echo off
title Choices
CMD /C EXIT 0
echo [1] Choice 1
echo [2] Choice 2
echo [3] Choice 3
choice /c 123 /n
IF ERRORLEVEL 1 GOTO ONE
IF ERRORLEVEL 2 GOTO TWO
IF ERRORLEVEL 3 GOTO THREE
echo Nice you broke it
pause
exit
:ONE
echo CONGRATS YOU CHOSE 1
pause
exit
:TWO
echo NICE YOU CHOSE 2
pause
exit
:THREE
echo OOH YOU CHOSE 3
pause
exit
它非常简单,您只需按一个数字,它就会显示您按的是什么数字。问题是无论我按什么,它总是输出当我按 1 时会发生什么。我曾经使用 %errorlevel% 并且工作正常但后来它停止工作所以我切换到新方法(IF ERRORLEVEL WHATEVER)现在它也不行。
请阅读 Microsoft 支持文章 Testing for a Specific Error Level in Batch Files。
并打开命令提示符 window、运行 if /?
并阅读输出帮助,尤其是关于 errorlevel
.
的段落
您的批处理文件的解决方案非常简单,颠倒 errorlevel
上测试的行的顺序:
@echo off
title Choices
CMD /C EXIT 0
echo [1] Choice 1
echo [2] Choice 2
echo [3] Choice 3
choice /c 123 /n
IF ERRORLEVEL 3 GOTO THREE
IF ERRORLEVEL 2 GOTO TWO
IF ERRORLEVEL 1 GOTO ONE
echo Nice you broke it
pause
exit
:ONE
echo CONGRATS YOU CHOSE 1
pause
exit
:TWO
echo NICE YOU CHOSE 2
pause
exit
:THREE
echo OOH YOU CHOSE 3
pause
exit
我使用批处理有一段时间了,最近 运行 遇到了一个我从未遇到过的问题,涉及 ERRORLEVELS。
这是我为展示错误而制作的一个简短程序。
@echo off
title Choices
CMD /C EXIT 0
echo [1] Choice 1
echo [2] Choice 2
echo [3] Choice 3
choice /c 123 /n
IF ERRORLEVEL 1 GOTO ONE
IF ERRORLEVEL 2 GOTO TWO
IF ERRORLEVEL 3 GOTO THREE
echo Nice you broke it
pause
exit
:ONE
echo CONGRATS YOU CHOSE 1
pause
exit
:TWO
echo NICE YOU CHOSE 2
pause
exit
:THREE
echo OOH YOU CHOSE 3
pause
exit
它非常简单,您只需按一个数字,它就会显示您按的是什么数字。问题是无论我按什么,它总是输出当我按 1 时会发生什么。我曾经使用 %errorlevel% 并且工作正常但后来它停止工作所以我切换到新方法(IF ERRORLEVEL WHATEVER)现在它也不行。
请阅读 Microsoft 支持文章 Testing for a Specific Error Level in Batch Files。
并打开命令提示符 window、运行 if /?
并阅读输出帮助,尤其是关于 errorlevel
.
您的批处理文件的解决方案非常简单,颠倒 errorlevel
上测试的行的顺序:
@echo off
title Choices
CMD /C EXIT 0
echo [1] Choice 1
echo [2] Choice 2
echo [3] Choice 3
choice /c 123 /n
IF ERRORLEVEL 3 GOTO THREE
IF ERRORLEVEL 2 GOTO TWO
IF ERRORLEVEL 1 GOTO ONE
echo Nice you broke it
pause
exit
:ONE
echo CONGRATS YOU CHOSE 1
pause
exit
:TWO
echo NICE YOU CHOSE 2
pause
exit
:THREE
echo OOH YOU CHOSE 3
pause
exit