美好的一天,
我对批处理文件仍然有点新,来自C ++和java,有些东西不同......
我有一个主要批次调用子批次,但是当它返回时,它会进入else循环,我不知道为什么?
在用户选择的主批次中并选择:
set /p input=Enter:
if %input%==1 goto check
if %input%==2 goto check
if %input%==3 goto check
if %input%==4 goto delete
if %input%==A call %cd%\subbatch.bat %var1% %var2%\
if %input%==B call %cd%\subbatch2.bat %var1% %var2%
if %input%==C call %cd%\subbatch3.bat %var1% %var2%
if {%input%}=={} (
echo.
echo Please enter a valid option
echo.
pause >nul
) else (
echo %input%
echo.
echo Please enter a valid option
echo.
pause >nul
)
它进入子代码,当它返回时,它进入else循环,
我在else循环中添加了echo%input%以查看所选内容,
它显示输入为A B或C,具体取决于我选择的,
然而,如果选择除1-4或A-C以外的任何其他选项,我希望其他命令只能启动,
如果尝试更好:
if %input% GTR 4 (echo enter valid option)
但如果我这样做,那些字母呢?
有没有办法比较字母?如:
if %input% GTR "C" ( ....)
答案 0 :(得分:1)
使用这种菜单,更好的选择是使用choice
命令只允许所需的选项。
BUT
为什么执行进入if的else部分。因为它就是它所说的。检查是is input empty ?
,如果用户选择了某些内容,则输入不为空,因此if条件为false,而else执行。
如果你想保留if else
的结构,最好这样做
if "%input%=="a" (
....
) else if "%input%"=="b" (
....
) else if "%input%"=="1" (
....
) else (
rem AND HERE falls the bad options
)