2017-03-26 144 views
0

我想在下面的代码中使用IF语句。在批处理文件中使用IF语句时出错(Windows)

@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.出现在输出。你能指出错误吗?提前致谢。

回答

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

Using "Double Quotes"

如果单参数包含空格,你仍然可以通过在“引号”中围绕一个 项目传递它 - 这对长文件名很适用。

同样是有效的任何命令令牌

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" 
+0

比q那么多.. – METALHEAD

1

一个更好的解决方案,如果你想知道的是“是变量空”是

if defined a (echo a is defined) else (echo a is not defined) 

自然,if not defined ...也可用。

0

试试这个:

{@回响 SET A = 集B = HELLO WORLD 呼应%B% 如果%A%==(你想成为什么)回声“字符串A空“ 如果%b%==”你好世界“回声”字符串B是空的“

相关问题