如果我这样做(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)环境变量的情况下输出不正确?
答案 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条件永远不会成立。