Batch file 两组双引号批处理文件错误

Batch file 两组双引号批处理文件错误,batch-file,double-quotes,Batch File,Double Quotes,为什么以下批处理脚本失败? 是因为有两组双引号吗? 我怎样才能让它工作 SET INCOME-CODE="test (bob, bob2)" IF "%INCOME-CODE%"=="NULL" ( SET APCINVOICE=%APCINVOICE%, ) ELSE ( SET APCINVOICE=%APCINVOICE%%INCOME-CODE%, ) 两件事 首先,您的变量INCOME-code中实际上有引号。尝试以下简短演示: @echo off set T

为什么以下批处理脚本失败? 是因为有两组双引号吗? 我怎样才能让它工作

SET INCOME-CODE="test (bob, bob2)"

IF "%INCOME-CODE%"=="NULL" (

  SET APCINVOICE=%APCINVOICE%,

 ) ELSE (

   SET APCINVOICE=%APCINVOICE%%INCOME-CODE%,

 )
两件事

首先,您的变量
INCOME-code
中实际上有引号。尝试以下简短演示:

@echo off
set TEST1="this is a string with spaces"
set "TEST2=this is a string with spaces"
echo %TEST1%
echo %TEST2%
第二个,您正在与文本字符串“NULL”进行比较。批处理中没有空值。请参阅本文了解更多详细信息:如果您正在处理更复杂的内容,您可能需要将其与空字符串进行比较,或者使用上述问题中的方法之一

IF "%INCOME-CODE%"=="" ( ... )

是否要检查是否定义了
INCOME-code
?是否确定批处理文件中允许使用变量名称的连字符?失败是什么意思?代码绝对不会导致故障。但是,如果字符串中有引号,然后在比较变量周围加引号,则字符串比较将不起作用。@Danielder连字符似乎有效。正如OP所怀疑的那样,问题确实在于存在两个连续的引号。这会将IF语句转换为“IF”“test(bob,bob2)”,因为有两个引号,字符串实际上被视为三个单独的单词。使用
设置“INCOME-code=test(bob,bob2)”
而不是
设置INCOME-code=“test(bob,bob2)”
,这样
就不会成为变量值的一部分;那么比较应该是有效的。。。