IF在批处理文件中

时间:2015-03-25 12:51:38

标签: windows batch-file scripting

如果我这样做(MyVar设置为" hi" value)

IF %MyVar% == "hi" ( Echo Hi )

然后我得到了输出

Hi

但如果我这样做(ProgramFile(x86)设置为C:\ Program Files(x86))

IF %ProgramFiles(x86)% == "C:\Program Files (x86)" ( Echo Hi )

然后我得出了

Files was unexpected at this time.

如果我这样做:

 IF "%ProgramFiles(x86)%" == "C:\Program Files (x86)" ( Echo Hi )

然后我得到 NO 输出

为什么在ProgramFile(x86)环境变量的情况下输出不正确?

1 个答案:

答案 0 :(得分:1)

If如果更改如下,则启用命令扩展:

  • IF [/I] string1 compare-op string2 command
  • IF CMDEXTVERSION number command
  • IF DEFINED variable command

其中compare-op可能是以下之一:

EQU - equal
NEQ - not equal
LSS - less than
LEQ - less than or equal
GTR - greater than
GEQ - greater than or equal

/I开关(如果已指定)表示要进行不区分大小写的字符串比较。 /I开关也可用于string1==string2形式的IF。这些比较是通用的,因为如果string1和string2都包含所有数字,则字符串将转换为数字并执行数字比较。

  

compare-op/I一起使用会更好;

所以你可以试试这段代码:

IF /I "%ProgramFiles(x86)%" equ "C:\Program Files (x86)" (echo Hi)
  

但也许推荐文本无效:

CMDEXTVERSION条件与ERRORLEVEL类似,只是它与与命令扩展相关联的内部版本号进行比较。第一个版本是1.当命令扩展中添加了重要的增强功能时,它将加1。禁用命令扩展时,CMDEXTVERSION条件永远不会成立。