加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

不允许使用Windows cmd脚本变量值中的括号?

发布时间:2020-12-14 05:29:15 所属栏目:Windows 来源:网络整理
导读:为什么提供以下 Windows 7 .cmd命令脚本: set SUN_JAVA_HOME=C:Program Files (x86)Javajdk1.6.0_17if 3==3 ( set JAVA_HOME=%SUN_JAVA_HOME%)echo ready 以下错误消息而不是打
为什么提供以下 Windows 7 .cmd命令脚本:

set SUN_JAVA_HOME=C:Program Files (x86)Javajdk1.6.0_17

if 3==3 (
 set JAVA_HOME=%SUN_JAVA_HOME%
)
echo ready

以下错误消息而不是打印“准备好”

Javajdk1.6.0_17 was unexpected at this time.

如果我删除路径名中的“(x86)”,则错误消息会消失.

解决方法

问题是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)Javajdk1.6.0_17

if 3==3 (
    set JAVA_HOME=!SUN_JAVA_HOME!
)
echo ready

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读