我有这个问题,为什么这个选择命令不会起作用。我查看了这个网站并比较了我的所有脚本,但我无法弄清楚为什么它不会工作 http://www.computerhope.com/issues/ch001674.htm
@ECHO OFF
:START
echo 1 to quit or 2 to print hello and go back to this screen
CHOICE /C:12 /N
IF ERRORLEVEL ==1 GOTO QUIT
IF ERRORLEVEL ==2 GOTO HELLO
GOTO :START
:QUIT
EXIT
:HELLO
ECHO hello
GOTO :END
:END
答案 0 :(得分:0)
我做了一些更改并删除了不必要的代码。
var filtered = arr.map(function(item){
return //??
})
答案 1 :(得分:0)
错误级别的测试错误。
有两种可能性:
@ECHO OFF
:BEGIN
ECHO 1 to quit or 2 to print hello and go back to this screen
CHOICE /C:12 /N
IF ERRORLEVEL 2 GOTO HELLO
IF ERRORLEVEL 1 EXIT /B
GOTO BEGIN
:HELLO
ECHO hello
GOTO BEGIN
请参阅Microsoft支持文章Testing for a Specific Error Level in Batch Files。
批处理用户必须按1或2,否则批处理执行不会继续。因此,使用
可以从最高到最低进行错误级别的测试if errorlevel X ...
表示如果errorlevel 大于或等于 X,则执行命令(或命令块)。
使用此语法的优点是它甚至可以在命令块中工作,而无需使用延迟扩展。
第二种可能性是:
@ECHO OFF
:BEGIN
ECHO 1 to quit or 2 to print hello and go back to this screen
CHOICE /C:12 /N
IF %ERRORLEVEL% == 1 EXIT /B
IF %ERRORLEVEL% == 2 GOTO HELLO
GOTO BEGIN
:HELLO
ECHO hello
GOTO BEGIN
通过显式引用环境变量ERRORLEVEL
,在 IF 评估条件之前进行扩展,错误级别测试的顺序不再重要。
此方法的缺点是,如果 CHOICE 需要使用延迟扩展,并且错误级别评估条件位于使用(
... )
定义的命令块内。
在命令提示符窗口if /?
和set /?
中运行,以获取有关正确使用命令 IF 和 SET 的帮助,分别获取有关延迟的信息扩展
使用标签START
是可能的,但不可取,因为这是Windows命令解释程序的内部命令。找到START
意味着标签时遇到麻烦,而START
意味着批处理文件将使用命令 START 。因此,BEGIN
用作标签。
建议至少在开发批处理文件时只使用参数/B
命令 EXIT ,只退出批处理,但不要完全退出运行命令进程独立调用层次结构和用于启动cmd.exe
的选项。
通过在命令提示符窗口(cmd.exe
以选项/K
启动以保持控制台窗口打开)中运行批处理文件,而不是双击批处理文件,可以更轻松地调试批处理文件(由于命令提示符窗口保持打开状态,cmd.exe
在使用/C
而不是仅仅exit /B
时使用选项exit
关闭以完成批量执行。有关Windows命令解释程序选项的详细信息,请在命令提示符窗口cmd /?
中运行。
GOTO BEGIN
从未执行过。因此,此批处理文件也可以写为:
@ECHO OFF
:BEGIN
ECHO 1 to quit or 2 to print hello and go back to this screen
CHOICE /C:12 /N
IF ERRORLEVEL 2 GOTO HELLO
EXIT /B
:HELLO
ECHO hello
GOTO BEGIN
答案 2 :(得分:0)
简单:
@ECHO OFF
:START
echo 1 to quit or 2 to print hello and go back to this screen
CHOICE /C 12 /N
GOTO OPTION-%ERRORLEVEL%
:OPTION-1 Quit
EXIT
:OPTION-2 Hello
ECHO hello
GOTO START