批处理脚本输入C/c/D/d仍提示Invalid Entry问题求助
批处理脚本输入合法选项仍提示无效的问题排查
你的脚本出现这个问题,主要是两个细节错误导致的:
问题1:条件判断的空格不匹配
你写的判断语句是If %Option%== C,等号右边的C前面多了一个空格。用户输入的是纯C/c/D/d,和带空格的 C(注意前面的空格)完全不匹配,所以所有合法输入都会被判定为无效,直接跳转到:incorrect标签。
问题2:缺少分支退出逻辑
就算某个条件判断匹配并执行了start命令,脚本不会停止,会继续执行后面的所有if语句,最后还是会走到:incorrect标签,弹出错误提示。
修复后的完整脚本
@echo OFF Echo Bienvenido Echo. echo Este batch es para saber si quieres Disk Clean Up o desea hacer un Disk Defragmenter echo. pause cls echo. set C= DiskCleanUp set D= DiskDeFragmenter :menu echo -------------------------------------- echo Escoge C para cleanup o D para Defrag echo -------------------------------------- set /p Option= Ingrese C o D: echo ------------------------- :choice REM 去掉等号右边的空格,并在匹配后跳转到结束部分 If /I "%Option%"=="C" ( start %windir%\system32\cleanmgr.exe goto :end ) If /I "%Option%"=="D" ( start %windir%\system32\dfrgui.exe goto :end ) :incorrect cls echo. echo Invalid Entry pause goto :menu :end echo. cls Echo Gracias por usar este batch de Eduardo Figueroa. echo. echo Press Enter para cerrar. echo . pause echo. Exit
关键修改说明:
- 用
If /I实现不区分大小写的判断,不用写4条重复的判断语句,一条C的判断就能匹配C和c,一条D的判断匹配D和d。 - 把判断内容用双引号包裹(
"%Option%"=="C"),避免输入内容带空格时出现语法错误,同时确保匹配的是纯字符,没有多余空格。 - 每个匹配分支执行
start后,用goto :end跳转到脚本结束部分,不会再执行后续代码走到错误提示。
内容的提问来源于stack exchange,提问作者Eduardo Figueroa
相关产品推荐
相关产品推荐

