以下大部分有效。 “大部分”,因为当上下文 XML 文件尝试通过相对路径名包含另一个文件时,使用 SOMETHING..\tasks\路径名会使 Spring 感到困惑。所以,我似乎需要一种在 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
) 并将结果存储到由第二个参数命名的(全局)变量
您可以像这样使用例程:
CALL :RESOLVE "%ROOT%\.." PARENT_ROOT
调用后,您可以使用变量 %PARENT_ROOT%
,该变量包含 %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
关于cmd - bat 文件: get parent pathname,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2172122/