@IF [%PORT%] == [] (
@echo Error : Com port not specified
goto end
) ELSE (
IF x%PORT:COM=%==x%PORT% (
@echo ERROR: Com port name invalid
goto end
)
)
我收到错误提示
=此刻端口是意外的。
外部if语句成功
答案 0 :(得分:1)
您的代码中的问题是,即使IF x%PORT:COM=%==x%PORT%
为空,行PORT
也会被解析,并且由于使用了sub-string substitution(实际上是空变量而中止),因此扩展行是语法无效。
要解决此问题,请不要使用else
,而应将其作为单独的if
语句编写,因此如果PORT
未定义,则不会对其进行解析:
if not defined PORT (
echo ERROR: COM port not specified
goto end
)
if "%PORT:COM=%"=="%PORT%" (
echo ERROR: COM port name invalid
goto end
)
此外,我在比较表达式两边加上了引号,建议这样做以避免出现特殊字符。此外,要检查变量是否为空,我使用了if defined
而不是进行比较。