Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 如何制作一个使用数字&;的.bat菜单;同一个多选菜单中的字母?_Batch File_Menu - Fatal编程技术网

Batch file 如何制作一个使用数字&;的.bat菜单;同一个多选菜单中的字母?

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%

我正在制作一个小(ish)实用程序批处理文件。 我有一个主要工作的多选菜单,它使用单键笔划(不输入)。 我想在第一组选项中使用数字,然后分别在帮助和退出选项中使用h&q。然而,当我在testing&selectany选项中运行.bat时,出现了两行文本,一行说“h此时出乎意料”&另一行说关于q的相同内容

这些选项似乎工作正常,但这些消息很烦人,为什么它们会出现&我该如何让它们消失

这是我的密码

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_
,那么您可以在添加数字时区分这两个菜单吗?