批处理:if语句与字符串比较总是返回true
问题描述:
if "x%1" == "x" (
goto :l2
)
:l2
echo doskey %1>>startup.cmd
在条件和goto上试过有和没有括号,也没有用引号试过,当然也试着在同一行上 - 它总是返回true。批处理:if语句与字符串比较总是返回true
答
你有一个非常愚蠢的错误:-)
如果条件为真,你GOTO标签。
如果条件为false,那么不要转到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
你真的不需要转到:
if "%~1" neq "" echo doskey %1>>startup.cmd
你传递一个参数到您的批处理脚本? '%1'是传递给脚本的第一个参数的值;如果你没有通过论证,if语句将永远是真实的。你想用你的'if'语句完成什么? –
是的,我传递了参数。 – UIlrvnd
不,它不会 - 但是完全相同的代码执行无关的评估。 – wmz