Batch file 如何制作一个使用数字&;的.bat菜单;同一个多选菜单中的字母?
我正在制作一个小(ish)实用程序批处理文件。 我有一个主要工作的多选菜单,它使用单键笔划(不输入)。 我想在第一组选项中使用数字,然后分别在帮助和退出选项中使用h&q。然而,当我在testing&selectany选项中运行.bat时,出现了两行文本,一行说“h此时出乎意料”&另一行说关于q的相同内容 这些选项似乎工作正常,但这些消息很烦人,为什么它们会出现&我该如何让它们消失 这是我的密码Batch file 如何制作一个使用数字&;的.bat菜单;同一个多选菜单中的字母?,batch-file,menu,Batch File,Menu,我正在制作一个小(ish)实用程序批处理文件。 我有一个主要工作的多选菜单,它使用单键笔划(不输入)。 我想在第一组选项中使用数字,然后分别在帮助和退出选项中使用h&q。然而,当我在testing&selectany选项中运行.bat时,出现了两行文本,一行说“h此时出乎意料”&另一行说关于q的相同内容 这些选项似乎工作正常,但这些消息很烦人,为什么它们会出现&我该如何让它们消失 这是我的密码 echo off cls :menu1 set mypath=%~dp0 @echo %mypath%
echo off
cls
:menu1
set mypath=%~dp0
@echo %mypath%
echo.
echo .............
echo intro
echo .............
echo.
echo -more menu text here
echo.
echo 1 - option
echo 2 - option
echo 3 - option
echo 4 - option
echo 5 - option
echo 6 - option
echo 7 - option
echo h - Help
echo q - Quit Program
echo.
choice /c:1234567hq
if errorlevel 1 set m=1
if errorlevel 2 set m=2
if errorlevel 3 set m=3
if errorlevel 4 set m=4
if errorlevel 5 set m=5
if errorlevel 6 set m=6
if errorlevel 7 set m=7
if errorlevel h set m=h
if errorlevel q set m=q
if %m%==1 goto test
if %m%==2 goto test
if %m%==3 goto test
if %m%==4 goto test
if %m%==5 goto test
if %m%==6 goto test
if %m%==7 goto test
if %m%==h goto test
if %m%==q goto test
:test
echo.
echo Aha! A test message!
echo.
pause
goto menu1
我想使用h&q的原因之一是因为我计划有第二个菜单,其中也会有这些选项&我希望他们在该菜单中也使用相同的键。我正试图使这一点尽可能的简单明了&对用户友好,所以我也不希望所有的选择都有任意的字母,如果这有意义的话
它们不会出现在常规菜单中(使用enter),但如果可能的话,我想让这个主菜单在单个按键上运行命令
感谢您的帮助。
errorlevel
指的是选项列表中项目的索引,它始终是一个数字。在您的示例中,h
是8,q
是9
另外,if errorlevel[number]
表示“如果errorlevel为[number]或更高”,因此需要向后列出选项,或者需要使用%errorlevel%
系统变量。最简单的方法是简单地将m
设置为%errorlevel%
,并去掉所有的goto
,因为它们和它们所指的标签之间没有代码
@echo off
cls
:menu1
set mypath=%~dp0
@echo %mypath%
echo.
echo .............
echo intro
echo .............
echo.
echo -more menu text here
echo.
echo 1 - option
echo 2 - option
echo 3 - option
echo 4 - option
echo 5 - option
echo 6 - option
echo 7 - option
echo h - Help
echo q - Quit Program
echo.
choice /c:1234567hq
set m=%errorlevel%
:test
echo.
echo Aha! A test message!
echo.
pause
goto menu1
怎么样
zxscvbnm
/asdfghjkl
或qwertyuiop
?这些钥匙很容易取用,而且不是任意取用的。在我的batchc脚本中,我通常使用zxc
实际上我应该补充一点,这是我的测试脚本&完成的脚本将有多个子例程,这只是一个:测试一附加到所有选项,但我计划让选项转到不同的子例程。所以我意识到设置m=%errorlevel%无法实现这一点。不过,我会尝试反向列表。注意:您甚至可以在代码中创建标签,如其他地方的:label1
和:label2
,然后只需使用转到标签%m%
,并摆脱大量if语句:)@ShojoDagger:例如,您可以只使用一个转到:标签-%errorlevel%
不同的goto
s.@geisterfurz007::D
那么使用不同的标签基名称怎么样?Eg、 ,:menu_A_
和:menu_B_
,那么您可以在添加数字时区分这两个菜单吗?