如何在.bat文件中为用户提供选项菜单

时间:2015-09-13 05:23:40

标签: batch-file cmd

我编写的代码有2个选项供用户输入。例如,他们输入1选择选项1,2选择选项2。

现在这是我的问题。我认为' 1未被识别为命令等等。' 看看代码并告诉我哪里出错了。此外,如果您发现任何其他问题,请随时指出它们。 (我知道它说启动游戏?,但它打开tskmngr我只是用它作为占位符的东西)

@echo off
title (Program name) PixelShooter Launcher
color 01
cls
:menu
echo PIXELSHOOTER
echo 1 - Start Game
echo 2 - Options

if %name% == 1 goto tskmngr
if %name% == 2 goto "AppData\Roaming\Pixelshooter\config.ini"
pause
:tskmngr
cls
echo Boot Game? (Y/N)
set /p boot
if %boot% == y start tskmngr
cls
if %boot% == n goto menu
if %boot% == y echo (K)
pause
goto menu
:AppData\Roaming\Pixelshooter\config.ini
cls
echo Boot Options?
 set /p boot
 if %boot% == y start AppData\Roaming\Pixelshooter\config.ini
 cls
 if %boot% == n goto menu
 if %boot% == y echo (K)
 pause
 goto menu

2 个答案:

答案 0 :(得分:1)

嗯,你现在拥有的东西对我来说并没有多大意义。但这是我修改现有代码的原因。但是你的一个主要问题就在你的第一次暂停之上,你的IF试图看看是否有一个不存在的变量集,因为你忘了设置所述变量,所以在那个暂停之后代码会直接流向:tskmngr。等待输入用作变量时,SET / P是必需的。

ionic serve

答案 1 :(得分:1)

=命令中缺少set /P

set /P boot=

或:

set /P boot=optional prompt text

要确保当用户按 Enter %boot%为空,请在set /P之前插入此命令:

set boot=

否则,%boot%会保留其先前的值。

要将用户输入与预定义选项进行比较,请使用if,如下所示:

if "%boot%"=="1" goto Label

如果用户输入为空,则需要"

最后,有一个choice命令用于这样的一键选项,它将ErrorLevel设置为所选项目:

choice /C YN /M "Do you want to continue?"
if %ErrorLevel% equ 1 goto Yes_label
if %ErrorLevel% equ 2 goto No_label
goto Fail_label

在命令提示符下键入choice /?并阅读帮助文本。