我有两个关于正在处理的批处理脚本的问题。我意识到批处理脚本的问题很常见,但还没有找到答案我的确切问题,所以我想我会试着问。有问题的区域是菜单上的用户输入部分。批处理脚本输入问题
有两个问题:1)输入的输入不是指定的选项之一会导致脚本跳转到随机区域。并且2)使用外部程序的某些部分即使在我知道语法和标志使用通常是正确的时候也不会使用%input%(因为我可以手动运行它们......所以出于某种原因,输入不是'捕捉他们)。
第一个问题例如:
:MenuOne
echo Select one of the following options:
echo 1) x
echo 2) y
echo Q) Quit
set INPUT=
set /P INPUT=[1,2,Q]: %=%
If "%INPUT%"=="1" goto xoption
If "%INPUT%"=="2" goto yoption
If /I "%INPUT%"=="Q" goto Quit
:xoption
@REM Here goes a lot more submenus and/or options that actually run tools via cmd.
:yoption
@REM Again, menus and/or tools being invoked, in a listed menu, designed like above.
:Quit
echo Quitting...
exit
如果用户键入“B”的选择提示,我很乐意为脚本的时候给出错误和重复菜单。相反,它会混在其他菜单中。我猜我需要一些ELSE语句?有没有人有我可以用来实现这个目标的例子?
第二期一些命令没有正确使用%input%并返回一个错误,就像它从未收到%input%一样。
set /P INPUT=[Testone Input]: %testone%
set /P INPUT=[Testtwo Input]: %testtwo%
commandtorun.exe -f %testone% -h %testtwo%
谢谢!
注意:如果OP使用的是Windows XP,默认情况下“choice”不可用。 – michaelb958
真棒答案 - 我不能相信我使用set/P错误。你是对的,我基本上是通过不使用两个不同的变量来覆盖旧的输入。现在工作,非常感谢!编辑:正如michaelb958说的那样,我试过了。哦,回到设置/ P现在工作得很好:)谢谢 – Interrupt