String 循环变量检查
在尝试执行某个函数之前,只需检查该函数是否存在。 我担心我可能会尝试使用这个简单的方法,我可能应该在执行流程循环之前检查字符串String 循环变量检查,string,loops,batch-file,error-handling,String,Loops,Batch File,Error Handling,在尝试执行某个函数之前,只需检查该函数是否存在。 我担心我可能会尝试使用这个简单的方法,我可能应该在执行流程循环之前检查字符串 SET /P Selection=Please Select Options? echo You chose: %Selection% Call :Process pause goto :EOF :Process for %%A in (%Selection%) do ( if not exist :Opt%%A (Call :Redo) ELSE (Call
SET /P Selection=Please Select Options?
echo You chose: %Selection%
Call :Process
pause
goto :EOF
:Process
for %%A in (%Selection%) do (
if not exist :Opt%%A (Call :Redo) ELSE (Call :Opt%%A)
)
GOTO :EOF
:Redo
Echo %Selection%
SET /P Selection=Selection was Invalid, Please choose a Valid Option:
Call :Process
GOTO :EOF
:Opt1
ECHO Option 1's code
GOTO :EOF
所以我遇到的问题是,如果不存在语句,我就会陷入其中,并且不允许函数正确运行
提前感谢当在标签不存在的情况下执行
调用
命令时,将显示错误消息,但该过程将在调用后以ERRORLEVEL=1的方式继续。为了避免检查标签是否存在,您可以充分利用这一点:
编辑:代码修改为回复注释
此解决方案的可能副本假定所选选择是一个变量,循环的要点是将字符串分隔为单个数组变量。感谢Aacini帮助我在批处理文件中检查错误,非常感谢。
SET /P Selection=Please Select Options?
echo You chose: %Selection%
:Process
for %%A in (%Selection%) do (
Call :Opt%%A 2>NUL
if errorlevel 1 (
SET /P Selection=Selection was Invalid, Please choose a Valid Option:
goto :Process
)
)
pause
goto :EOF
:Opt1
ECHO Option 1's code
exit /B 0