2015-03-25 222 views
1

如果我做(myvar可以设置为 “hi” 值)IF在批处理文件

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

然后我输出

Hi 

但如果我这样做(ProgramFile(86)设置为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

'set ProgramFiles(x86)'说什么? – Stephan 2015-03-25 12:57:07

+1

无法重新创建。 'IF“%ProgramFiles(x86)%”==“C:\ Program Files(x86)”(Echo Hi)'在我的机器上回应Hi。你输出的不足可能是错字的结果。为什么不只是'如果定义的PROGRAMFILES(x86)回声嗨'而不是? – rojo 2015-03-25 13:28:53

+0

@Stephan set ProgramFiles(x86)给出输出C:\ Program Files(x86) – 2015-03-26 10:23:50

回答

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交换机也可以用于IF的string1==string2形式。这些比较是通用的,因为如果string1和string2都包含所有数字,那么字符串将转换为数字并执行数字比较。

使用compare-op/I可以更好;

,所以你可以试试这个代码:

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

但也许称道的文本是无效的:

CMDEXTVERSION条件的作用跟ERRORLEVEL的一样,除了它是在一个比较与命令扩展关联的内部版本号。第一个版本是1.当将重要增强添加到命令扩展时,它会增加1。命令扩展禁用时,CMDEXTVERSION条件永远不会成立。

+0

试试这个'IF%ProgramFiles(x86)%equ%ProgramFiles(x86)%嗨)'! – 2015-03-25 14:03:36