Прямо сейчас я использую два пакетных файла, хорошо называйте их variables.cmd и main.cmd для этого примера. Файл variable.cmd должен использоваться для вывода набора переменных, которые могут использоваться с несколькими другими пакетными файлами.
Теперь у каждой переменной нет проблем с доступом в файле main.cmd, кроме CLASSPATH. Когда echo вызывается в variables.cmd, CLASSPATH создается правильно, но при отражении в файле main.cmd я получаю следующий результат:
!CLASSPATH!;C:\ipp\deploy\lib\app\momex-webservice-client.jar;C:\ipp\deploy\resources
Есть идеи о том, что происходит и как это можно решить?
Это файл main.cmd:
@echo off
call variables.cmd
echo %JAVA_HOME%
echo %DEPLOY%
echo %DEBUG%
echo %DEBUG_PORT%
echo %JAVA_OPTIONS%
echo %CLASSPATH%
Это файл variables.cmd:
@echo off
setlocal EnableDelayedExpansion
set JAVA_HOME="C:\Program Files\Java\jdk1.6.0_30"
set DEPLOY=C:\ipp\deploy
set DEBUG=false
set DEBUG_PORT=15000
set JAVA_OPTIONS="
set JAVA_OPTIONS=%JAVA_OPTIONS% -Djava.endorsed.dirs=%DEPLOY%\lib\endorsed
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dcom.sun.xml.ws.transport.http.client.HttpTransportPipe.dump="true"
set JAVA_OPTIONS=%JAVA_OPTIONS% -Dconfiguration.properties=%DEPLOY%\resources\vendor.configuration.properties
if "%DEBUG%"=="true" (
set JAVA_OPTIONS=%JAVA_OPTIONS% -Xdebug -Xnoagent -Xrunjdwp:transport=dt_socket,address=15000,suspend=n,server=y
)
set CLASSPATH=%DEPLOY%
for %%i in (%DEPLOY%\*.jar) do (
set CLASSPATH=!CLASSPATH!;%%i
)
for %%i in (%DEPLOY%\lib\system\*.jar) do (
set CLASSPATH=!CLASSPATH!;%%i
)
for %%i in (%DEPLOY%\lib\app\*.jar) do (
set CLASSPATH=!CLASSPATH!;%%i
)
for %%i in (%DEPLOY%\tools\jaxws-ri\lib\*.jar) do (
set CLASSPATH=!CLASSPATH!;%%i
)
set CLASSPATH=%CLASSPATH%;%DEPLOY%\resources