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

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

4

1 回答 1

7

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

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

如果条件为假,您不会转到,但您会进入下一行,这恰好是您的标签。

无论哪种方式,结果都是一样的!

其他问题 -

1)我认为你的逻辑是颠倒的。我相信你只想 GOTO :l2 如果 %1 被定义,你有相反的。

2) (包括引号)的 %1 值"A&B"将失败。更好地使用"%~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
于 2012-08-31T12:17:01.563 回答