在批处理文件中使用IF语句时出错(Windows)

时间:2017-03-26 07:03:26

标签: string batch-file if-statement

我正在尝试在下面的代码中使用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.出现在输出中。你能指出错误吗?提前谢谢。

4 个答案:

答案 0 :(得分:2)

阅读Using "Double Quotes"

  

如果单个参数包含空格,您仍然可以将其作为一个参数传递   项目围绕"报价" - 这适用于长文件名。

同样适用于任何命令 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为空”