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
我尝试删除一些行,但没用。任何人都可以帮我解决这个问题吗?
答案 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键的需要。