batch:if带有字符串比较的语句始终返回true

时间:2012-08-31 10:51:16

标签: batch-file

if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd

在条件和goto上尝试使用和不使用括号,也尝试不使用引号,当然转到同一行 - 它总是返回true。

1 个答案:

答案 0 :(得分:7)

你有一个非常愚蠢的错误: - )

如果条件为真,则转贴标签。

如果条件是假的,你不要GOTO,但是你会掉到恰好是你的标签的下一行。

同样的结果!

其他问题 -

1)我认为你的逻辑是颠倒过来的。我相信你只想要GOTO:l2如果定义了%1,你就会反过来。

2)"A&B"(包括引号)的%1值将失败。最好使用"%~1"代替"%1"

3)比较中不需要x。

轻松修复:

if "%~1" neq "" goto :l2
exit /b
:l2
echo doskey %1>>startup.cmd

你真的不需要goto:

if "%~1" neq "" echo doskey %1>>startup.cmd