为什么提供以下
Windows 7 .cmd命令脚本:
set SUN_JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_17 if 3==3 ( set JAVA_HOME=%SUN_JAVA_HOME% ) echo ready
以下错误消息而不是打印“准备好”
\Java\jdk1.6.0_17 was unexpected at this time.
解决方法
问题是if 3 == 3部分之后的括号分组.
在解析集合JAVA_HOME =%SUN_JAVA_HOME%命令时,解释器立即替换%SUN_JAVA_HOME%变量,并导致(386)中右括号的早期匹配.
如果启用delayed expansion并将%SUN_JAVA_HOME%替换为!SUN_JAVA_HOME,则可以避免这种情况!:
setlocal enabledelayedexpansion set SUN_JAVA_HOME=C:\Program Files (x86)\Java\jdk1.6.0_17 if 3==3 ( set JAVA_HOME=!SUN_JAVA_HOME! ) echo ready