我正在尝试在下面的代码中使用IF语句。
@echo off
SET a=
SET b=HELLO WORLD
echo %b%
if [%a%] == [] echo "String A is empty"
if [%b%] == [] echo "String B is empty"
我得到的输出如下
HELLO WORLD
"String A is empty"
WORLD] was unexpected at this time.
为什么WORLD] was unexpected at this time.
出现在输出中。你能指出错误吗?提前谢谢。
答案 0 :(得分:2)
如果单个参数包含空格,您仍然可以将其作为一个参数传递 项目围绕"报价" - 这适用于长文件名。
同样适用于任何命令 token :
if [HELLO WORLD] == [] echo "String B is empty"
↑↑ command line parser expects compare operator here like == EQU GTR etc.
使用
if "%a%" == "" echo "String A is empty"
if "%b%" == "" echo "String B is empty"
答案 1 :(得分:1)
@echo off
SET a=
SET b=HELLO WORLD
echo %b%
if "%a%" == "" echo "String A is empty"
if "%b%" == "" echo "String B is empty"
这是因为%b%
中的空格被视为if.Quotes的两个参数,可用于传递带有分隔符的参数,但不能传递[]
答案 2 :(得分:1)
一个更好的解决方案,如果你想知道的是"变量是空的"是
if defined a (echo a is defined) else (echo a is not defined)
自然,if not defined ...
也可用。
答案 3 :(得分:0)
试试这个:
{@echo off SET a = SET b = HELLO WORLD 回声%b% if%a%==(你想要的是什么)echo“String A为空” if%b%==“HELLO WORLD”echo“String B为空”