首页 > 解决方案 > Batch If 语句给出“此时是意外的”并崩溃

问题描述

这个程序(以及我过去工作过的程序)总是会使程序崩溃并使其无法正常工作。同时,如果我删除它们,其中的代码运行良好。我已经包含了暂停命令来查看问题的根源,并且问题从 if 语句的第一行开始。

echo (: Gold Fish Game :)
echo ####################
echo 1 - Begin Journey
echo 2 - Tragic Backstory
echo 3 - Exit This 
set /p choice = "Choose one dude "

if %choice% == 1 (
    goto S1L1
)
if %choice% == 2 (
    goto MenuBackstory
)
if %choice% == 3 (
    exit
)

标签: batch-file

解决方案


您使用了错误的命令,该Set /P命令根本不接受任何输入,或者绝对接受任何输入,并且在在其他地方使用该输入之前需要一个非常强大的验证程序。

因此,您应该使用choice命令实用程序。打开命令提示符窗口,键入choice /?,按ENTER键,然后阅读使用信息。

例子:

Echo (: Gold Fish Game :)
Echo ####################
Echo 1 - Begin Journey
Echo 2 - Tragic Backstory
Echo 3 - Exit This 
%SystemRoot%\System32\choice.exe /C 123 /M "What is your chosen item number"
If ErrorLevel 3 Exit /B
If ErrorLevel 2 GoTo MenuBackstory

:S1L1

推荐阅读