【发布时间】:2015-07-06 16:57:08
【问题描述】:
我正在编写一个批处理脚本来从 JAVA_HOME 环境变量中删除引号,并且仅当 JAVA_HOME 设置为路径中的“Program Files (x86)”时才会出现错误。我的 JAVA_HOME 变量设置为C:\Program Files (x86)\Java\jdk1.7.0_79(值中没有引号)
set lastChar=%JAVA_HOME:~-1%
set firstChar=%JAVA_HOME:~0,1%
echo Begin
if '^%firstChar%=='^" (
echo JAVA_HOME starts with a quote
if '^%lastChar%=='^" (
echo JAVA_HOME ends with a quote
set JAVA_HOME=%JAVA_HOME:~1,-1% ###Error occurs on this line
)
)
echo END
输出是:
Begin
\Java\jdk1.7.0_7 was unexpected at this time.
如您所见,“echo Begin”之后的行都没有运行。如果我注释掉 set JAVA_HOME=%JAVA_HOME:~1,-1% 行,那么程序会一直运行到 END。此外,如果我将 JAVA_HOME env var 更改为 C:\Program Files\Java\jdk1.7.0_79,则脚本运行良好,无需注释掉该行。
为什么这一行给我这个错误?
【问题讨论】:
-
我认为
if语句紧跟在echo Begin语句之后会出现语法错误。
标签: windows batch-file escaping environment-variables