Batch file if语句中变量名出现windows批处理文件错误

Batch file if语句中变量名出现windows批处理文件错误,batch-file,cmd,Batch File,Cmd,我得到的错误是 =端口此时意外 当外部if语句成功时代码中的问题是即使当端口为空时,仍会解析第行if x%PORT:COM===x%PORT%,并且由于使用了,实际上会使用空变量中止,因此扩展行的语法无效 要解决此问题,请不要使用else,而是将其作为独立的if语句写入,以便在未定义端口时不会对其进行解析: 如果未定义端口( 回显错误:未指定COM端口 转到终点 ) 如果“%PORT:COM=%”为“%PORT%”( 回显错误:COM端口名无效 转到终点 ) 此外,我在比较表达式周围加了引号,

我得到的错误是

=端口此时意外


当外部if语句成功时

代码中的问题是即使当
端口
为空时,仍会解析第
行if x%PORT:COM===x%PORT%
,并且由于使用了,实际上会使用空变量中止,因此扩展行的语法无效

要解决此问题,请不要使用
else
,而是将其作为独立的
if
语句写入,以便在未定义
端口时不会对其进行解析:

如果未定义端口(
回显错误:未指定COM端口
转到终点
)
如果“%PORT:COM=%”为“%PORT%”(
回显错误:COM端口名无效
转到终点
)

此外,我在比较表达式周围加了引号,这是为了避免特殊字符的问题。此外,为了检查变量是否为空,我使用了
if defined
,而不是比较。

我在这里没有看到任何与Powershell相关的内容。请不要使用不相关的标记。很抱歉,已删除标记。为了安全起见,请将字符串用双引号括起来进行比较,
如果“%PORT%”==”
如果/I“x%PORT:COM=%”==“x%PORT%”
。对于前者,在第一次确保使用
设置“PORT=“
”后,如果未定义端口,我更喜欢

@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
    )
)