批量编码菜单选项返回

时间:2018-01-25 00:31:15

标签: batch-file menu label

我对编码很新,而且我被告知要从批处理文件开始。我试图创建一个基于文本的游戏,提示用户在几个选项之间进行选择以完成故事。我已经掌握了基本的想法,但是我在制作菜单时遇到了一些麻烦。我在这里做了一些研究,并搜索过其他网站,但似乎无法对类似问题的一些答案做出正面或反面。大多数答案写出了我认为可行的代码,但我需要知道这些答案背后的原因,而且我还没有找到任何我能理解的答案。

TLDR;我需要为基于文本的游戏制作菜单,允许用户返回他们中断的标签。

到目前为止我所拥有的:

:MainMenu
cls
echo Input Options:
echo.
echo ::1) View Storyline Changes
echo ::2) Restart Test
echo ::3) Resume Test
echo ::4) Help
echo ::5) Quit
echo.
set /p input=Input:
if "%input%" == "1" goto StorylineChanges
if "%input%" == "2" goto Rst
if "%input%" == "3" goto ResumeTest
if "%input%" == "4" goto HelpScrn
if "%input%" == "5" exit

:StorylineChanges
cls
echo Unimportant to test.
echo.
echo                                        Input "m" to go back
echo.
set /p input=Input: 
if "%input%" == "m" goto Main Menu
if "%input%" == " " goto WrongInputStorylineChanges

:Rst
cls
goto :StartTest
echo off

:ResumeTest
cls
REM ***THIS IS WHERE I NEED HELP ***
pause >nul
goto StartTest

正如你可能会立即告诉我的那样,我可以掌握基本命令,所以如果你提供答案,请记住这一点。我非常感谢你们给我的任何帮助。非常感谢。

1 个答案:

答案 0 :(得分:1)

我无法解开意大利面条代码,但我可举一个例子 详细说明如何回复菜单,如标题所示。

@echo off

:MainMenu
cls
echo Input Options:
echo.
echo ::1) View Storyline Changes
echo ::2) Restart Test
echo ::3) Resume Test
echo ::4) Help
echo ::5) Quit
echo.
set /p input=Input:
if "%input%" == "1" call :StorylineChanges
if "%input%" == "2" call :Rst
if "%input%" == "3" call :ResumeTest
if "%input%" == "4" call :HelpScrn
if "%input%" == "5" exit /b 0
goto :MainMenu

:StorylineChanges
echo Use "goto :eof" to exit script or exit called label.
pause
goto :eof

:Rst
echo Use "exit /b" to exit script or exit called label with a errorlevel.
pause
exit /b 0

:ResumeTest
>&2 echo Exit called label with errorlevel 1. This line is to stderr.
pause
exit /b 1

:HelpScrn
echo Help. Exit with implicit 0.
pause
exit /b

以上使用call来访问每个标签。退出被叫标签 返回到通话点。菜单处于循环中,因此它保持不变 显示,直到您输入5退出脚本。

我在标签中添加了暂停功能,因此您可以在clr之前看到消息 被称为。