正确转义.bat文件中的JVM参数列表

时间:2013-05-06 10:05:02

标签: file batch-file jvm arguments

我有一个bat文件,我试图通过“-Dhttp.nonProxyHosts”将JVM列为非代理主机列表。该文件已经包含一个参数列表,如果我尝试添加一个有问题的参数:

set "JAVA_OPTS=-Xms64M -Xmx1024M -XX:MaxPermSize=256M"
...
set "JAVA_OPTS=%JAVA_OPTS% -Dhttp.nonProxyHosts=*.company.com|localhost|127.0.0.1"

Windows告诉我“命令'localhost'未找到”。

如果我试图像

那样逃避它
set "JAVA_OPTS=%JAVA_OPTS% -Dhttp.nonProxyHosts=*.company.com^|localhost^|127.0.0.1"

结果几乎相同,那么我如何正确传递这个列表呢?

干杯 西蒙

1 个答案:

答案 0 :(得分:1)

我认为问题不是SET,而是稍后使用JAVA_OPTS变量时。

最好的方法是在这里使用延迟扩展,因为它根本不会忽略特殊字符。

setlocal EnableDelayedExpansion
set "JAVA_OPTS=-Xms64M -Xmx1024M -XX:MaxPermSize=256M"
set "JAVA_OPTS=%JAVA_OPTS% -Dhttp.nonProxyHosts=*.company.com|localhost|127.0.0.1"

java.exe !JAVA_OPTS!