批量ERRORLEVEL无法正常工作

时间:2016-07-21 01:27:47

标签: batch-file cmd choice errorlevel

我一直在使用批处理一段时间,我最近遇到了一个我从未遇到的问题,之前涉及到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)现在它也不会工作。

1 个答案:

答案 0 :(得分:0)

请阅读Microsoft支持文章Testing for a Specific Error Level in Batch Files

打开命令提示符窗口,运行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