批处理(bat)文件if条件判断语句无法运行的原因排查
批处理if条件分支不执行的故障排查与修复
你这段脚本if分支无法正常触发,是3处批处理语法错误共同导致的:
- 变量赋值语法错误:
set /A sum =%num1%+%num2%这行等号两侧加了多余空格,批处理set语法中,等号前的所有字符(包括空格)都会被识别为变量名,这行实际创建的变量是sum(sum尾部带空格),后续if判断中调用的%sum%是无尾部空格的变量名,取值为空,自然永远匹配不到“等于2”的条件。 goto命令误用:goto的作用是跳转到脚本内部通过:标签名定义的标记位置,不能直接在后面拼接外部程序、网址作为跳转目标,就算变量判断正确,这行也会因为找不到对应标签直接报错退出分支,看起来就像if没有触发。set /P写法不规范:提示文本和等号之间加了多余空格,还把引号放在了提示文本外侧,容易导致用户输入取值异常,出现变量带多余空格、值截断的问题。
修复后可正常运行的代码
@echo off @REM 修复if分支无法触发问题 set /P "num1=Enter your first number but don't enter 1, warning if you enter 1 you are hacked " set /P "num2=Enter your second number but don't enter 1, warning if you enter 1 you are hacked " echo num1 = %num1% echo num2 = %num2% set /A sum=%num1%+%num2% if %sum% EQU 2 ( start chrome https://www.youtube.com/channel/UCpOAe47k4uLjemSBTiAEk2g ) else ( echo Sum = %sum% ) pause
补充说明:如果系统没有把Chrome路径加入环境变量,把代码里的
chrome替换为Chrome浏览器的完整本地安装路径即可,注意路径包含空格的话要给路径加双引号。数值判断也可以用批处理原生的数值比较运算符EQU代替==,避免字符串比较带来的隐性匹配问题。
内容的提问来源于stack exchange,提问作者Hackway
相关产品推荐
相关产品推荐

