Следующее в основном работает. «В основном», потому что использование SOMETHING .. \ tasks \ pathname сбивает с толку Spring, когда XML-файл контекста пытается включить другой по относительному пути. Итак, мне кажется, что в BAT-файле нужно установить переменную в родительский каталог с именем пути.
set ROOT=%~dp0
java -Xmx1g -jar %ROOT%\..\lib\ajar.jar %ROOT%\..\tasks\fas-model.xml tasks
Чтобы разрешить относительное имя пути, которое вы можете использовать подходящий звонок. В конце вашего пакетного файла поместите следующие строки:
GOTO :EOF
:RESOLVE
SET %2=%~f1
GOTO :EOF
Это подпрограмма, которая разрешает свой первый параметр на полный путь (% ~ F1
) и хранит результат к (Global) переменной Названный 2-го параметра
, вы можете использовать подобную рутину:
CALL :RESOLVE "%ROOT%\.." PARENT_ROOT
После вызова вы можете использовать переменную % Parent_root%
, который содержит имя родительского пути, содержащегося в корневом уровне %
Переменная.
Ваш полный пакетный файл должен выглядеть следующим образом:
SET ROOT=%~dp0
CALL :RESOLVE "%ROOT%\.." PARENT_ROOT
java -Xmx1g -jar "%PARENT_ROOT%\lib\ajar.jar" "%PARENT_ROOT%\tasks\fas-model.xml" tasks
GOTO :EOF
:RESOLVE
SET %2=%~f1
GOTO :EOF