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

UIl*_*vnd 2 batch-file

if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
Run Code Online (Sandbox Code Playgroud)

有和无的条件和转到括号都试过了,也试过不带引号,并在同一行当然goto语句 - 它总是返回true.

dbe*_*ham 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
Run Code Online (Sandbox Code Playgroud)

你真的不需要goto:

if "%~1" neq "" echo doskey %1>>startup.cmd
Run Code Online (Sandbox Code Playgroud)