如何调试" SET / p"哪个不能正常工作?

时间:2017-03-20 22:55:05

标签: batch-file cmd

set /p不起作用。我正在尝试制作批处理操作系统,但这不起作用:

 @echo OFF 
cls
color 0a
title DudeMan555 PowerBatch OS 2 Alpha 1

:bootmenu
ECHO BOOT MENU
echo 1- POWERBATCHOS KERNEL 45
echo 2- WINDOWS

set /p BOOT=
if %BOOT%= 1 goto startup
if %BOOT%= 2 goto windows

:startup
pause

: windows
pause

我尝试删除一些行,但没用。任何人都可以帮我解决这个问题吗?

1 个答案:

答案 0 :(得分:1)

首先,在你的if陈述中,你应该使用两个相同的符号,而不是一个。代码的第11行如下所示:if %BOOT% == 1 goto startup

其次,如果用户输入的内容不是1或2,则批处理文件会继续运行。我会在你的goto bootmenu陈述后加if。它看起来像这样:

:bootmenu
ECHO BOOT MENU
echo 1- POWERBATCHOS KERNEL 45
echo 2- WINDOWS

set /p BOOT=
if %BOOT%= 1 goto startup
if %BOOT%= 2 goto windows
goto bootmenu

接下来,您要解决用户输入空间的问题。这将导致set命令出现故障。我会改用choice,所以你的代码看起来像这样:

@echo OFF 
cls
color 0a
title DudeMan555 PowerBatch OS 2 Alpha 1

:bootmenu
ECHO BOOT MENU
echo 1- POWERBATCHOS KERNEL 45
echo 2- WINDOWS

choice /c 12 /n
if %errorlevel% == 1 goto startup
if %errorlevel% == 2 goto windows

:startup
pause

: windows
pause

这也将消除在输入答案后按Enter键的需要。